<?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/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
>

<channel>
	<title>A Weblog &#187; Computer Science</title>
	<atom:link href="http://blogs.law.harvard.edu/jreyes/category/computer-science/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.law.harvard.edu/jreyes</link>
	<description>Education, design, society, and whatever else.</description>
	<lastBuildDate>Fri, 19 Dec 2008 18:21:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
		<item>
		<title>Geotools, WFS-T Update Request</title>
		<link>http://blogs.law.harvard.edu/jreyes/2007/08/03/geotools-wfs-t-update-request/</link>
		<comments>http://blogs.law.harvard.edu/jreyes/2007/08/03/geotools-wfs-t-update-request/#comments</comments>
		<pubDate>Fri, 03 Aug 2007 17:54:02 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/jreyes/2007/08/03/geotools-wfs-t-update-request/</guid>
		<description><![CDATA[
A pet project of mine has flung me into the exciting though less-than-firm territory of web-backed geographical information systems. Since I don&#8217;t have the thousands of dollars it costs to get a commercial server like those provided by ESRI, I&#8217;ve had to check out the open-source alternatives. And there are some out there. I&#8217;m using [...]]]></description>
			<content:encoded><![CDATA[<p>
A pet project of mine has flung me into the exciting though less-than-firm territory of web-backed geographical information systems. Since I don&#8217;t have the thousands of dollars it costs to get a commercial server like those provided by ESRI, I&#8217;ve had to check out the open-source alternatives. And there are some out there. I&#8217;m using <a href="http://www.geoserver.org">GeoServer</a>, and it works great! I can send all the web-feature service transactions (WFS-T) in XML I want and it works every time. Not bad if you want to make a <a href="http://www.maps.google.com">GoogleMap</a> of your house on your own&#8212;so long as you&#8217;re content to hard-code everything by hand. Should you want to jazz things up a bit (i.e., make minimally useful dynamic maps), like me, then you have to do a little more work. Actually, you need to do a lot more work.
</p>
<p>
GeoServer is built on top of a gargantuan set of Java libraries, collectively packaged under the name <a href="http://www.geotools.org">GeoTools</a>. Now I appreciate that this thing exists, all two hundred and fifty megs of source code and all the functionality that comes with it. However, navigating the mountain of documentation for this thing is, at least for me, a little daunting. It took me a few days (and some serious help from my friend Matt) to figure out how to write a simple update transaction using their API. (Compare that to the forty-two seconds it takes me to type up the XML.)
</p>
<p>
Since other people might want to know what they have to do update an attribute field using WFS with GeoTools, and since I couldn&#8217;t easily find out how to do it elsewhere, I&#8217;ve decided to post a short snippet of code right here on my blog. That&#8217;s right: my charity knows no bounds.
</p>
<p>
In this example I&#8217;m going to update the value of all the features (polygons, lines, points, whatever) that match a simple filter. Here I&#8217;m going to change the value of <var>propertyToUpdate</var> to <var>updatedValue</var> using a filter to get all the features with the attribute called <var>constraintProperty</var> with a value of <var>constraintValue</var>. I&#8217;ve marked them in red, so that it&#8217;s as easy as possible to customize this example to fit your needs. Let&#8217;s start with the XML that the <a href="http://www.opengeospatial.org/standards"> Open Geospatial Consortium</a> standards expects to see.
</p>
<blockquote><p>
&lt;wfs:Transaction service=&#8221;WFS&#8221; version=&#8221;1.0.0&#8243;<br />
&nbsp; &nbsp; &nbsp;xmlns:<font color="red">myns</font>=&#8221;<font color="red">http://www.domain.com/ns</font>&#8221;<br />
&nbsp; &nbsp; &nbsp;xmlns:ogc=&#8221;http://www.opengis.net/ogc&#8221;<br />
&nbsp; &nbsp; &nbsp;xmlns:wfs=&#8221;http://www.opengis.net/wfs&#8221;&gt;<br />
&nbsp; &lt;wfs:Update typeName=&#8221;<font color="red">myns:LayerToUpdate</font>&#8220;&gt;<br />
&nbsp; &nbsp; &lt;wfs:Property&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;wfs:Name&gt;<font color="red">propertyToUpdate</font>&lt;/wfs:Name&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;wfs:Value&gt;<font color="red">updatedValue</font>&lt;/wfs:Value&gt;<br />
&nbsp; &nbsp; &lt;/wfs:Property&gt;<br />
&nbsp; &nbsp; &lt;ogc:Filter&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;ogc:PropertyIsEqualTo&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;ogc:PropertyName&gt;<font color="red">constraintProperty</font>&lt;/ogc:PropertyName&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;ogc:Literal&gt;<font color="red">constraintValue</font>&lt;/ogc:Literal&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;/ogc:PropertyIsEqualTo&gt;<br />
&nbsp; &nbsp; &lt;/ogc:Filter&gt;<br />
&nbsp;   &lt;/wfs:Update&gt;<br />
&lt;/wfs:Transaction&gt;
</p></blockquote>
<p>
Now let&#8217;s rock out the Java.
</p>
<p>
Like I said, GeoTools is mammoth. To make life easy, we&#8217;re going to import a whole bunch of classes for this example. So many, in fact, that their number really warrants my displaying them here in their own list. What&#8217;s more, the names of some of classes (like Filter) show up in more than one package, and you need to keep track of which is used where. So keep an eye out for things from org.opengis.
</p>
<blockquote><p>
import java.io.IOException;<br />
import&nbsp;<a href="http://java.net" title="http://java. " target="_blank">java.net</a>.MalformedURLException;<br />
import&nbsp;<a href="http://java.net" title="http://java. " target="_blank">java.net</a>.URL;<br />
import java.util.HashMap;<br />
import java.util.Map;<br />
import java.util.logging.Level;</p>
<p>import org.geotools.data.DataStore;<br />
import org.geotools.data.DefaultTransaction;<br />
import org.geotools.data.FeatureStore;<br />
import org.geotools.data.Transaction;<br />
import org.geotools.data.wfs.WFSDataStoreFactory;<br />
import org.geotools.feature.AttributeType;<br />
import org.geotools.feature.FeatureType;<br />
import org.geotools.filter.FilterFactoryFinder;<br />
import org.geotools.xml.XMLSAXHandler;</p>
<p>import org.opengis.filter.Filter;<br />
import org.opengis.filter.FilterFactory;<br />
import org.opengis.filter.expression.Expression;
</p></blockquote>
<p>
In our constructor we&#8217;ll set up a connection to the WFS server using a URL.  If you&#8217;re tinkering with GeoServer, then that URL you&#8217;re looking for probably looks something like <var>http://localhost:8080/geoserver/wfs</var>. Since we know that we&#8217;ll want to filter our responses, it&#8217;s not a terrible idea to make a filter factory now and save it for later. In GeoTools everything is made using a factory. For filters, we need to make a factory using the new keyword, though. Here goes.
</p>
<blockquote><p>
public class WFSUpdater {</p>
<p>&nbsp; &nbsp; private DataStore wfs;<br />
&nbsp; &nbsp; private FilterFactory filterFactory;</p>
<p>&nbsp; &nbsp; public WFSUpdater(String url) {<br />
&nbsp; &nbsp; &nbsp; try {<br />
&nbsp; &nbsp; &nbsp; &nbsp; URL endPoint = new URL(url);</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; XMLSAXHandler.setLogLevel(Level.OFF); <font color="green">// turns off logging for XML parsing.</font></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; <font color="green">// Parameters to connect to the WFS server, namely the URL.<br />
&nbsp; &nbsp; &nbsp; &nbsp; // You could have others, say if you had to authenticate your connection with a username and password. </font><br />
&nbsp; &nbsp; &nbsp; &nbsp; Map params = new HashMap();<br />
&nbsp; &nbsp; &nbsp; &nbsp; params.put(WFSDataStoreFactory.URL.key, endPoint);</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; wfs = (new WFSDataStoreFactory()).createNewDataStore(params);<br />
&nbsp; &nbsp; &nbsp; &nbsp; filterFactory = FilterFactoryFinder.createFilterFactory();</p>
<p>&nbsp; &nbsp; &nbsp; } catch (MalformedURLException e) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; e.printStackTrace();<br />
&nbsp; &nbsp; &nbsp; } catch (IOException e) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; e.printStackTrace();<br />
&nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; }</p>
</blockquote>
<p>
Now that we have a connection, it&#8217;s time to make the transaction. As a first timer to GeoTools, I found it difficult to crawl through the documentation. Lots of their classes and methods have been deprecated with no clear hints about what to use instead. I had a hard time finding the right constructors. In what follows everything is hard-wired into the code, but it shouldn&#8217;t be all that bad to tweak things so that it works the way you like.
</p>
<blockquote><p>
public void updateProperty(String <font color="red">propertyToUpdate</font>, String <font color="red">updatedValue</font>) {<br />
&nbsp; &nbsp; <font color="green">// This is the layer name on the server.</font><br />
&nbsp; &nbsp; String layer = &#8220;<font color="red">myns:LayerToUpdate</font>&#8220;;<br />
&nbsp; &nbsp; Transaction update = new DefaultTransaction(&#8221;update&#8221;); <font color="green">// The handle/ID of this transaction is called &#8220;update.&#8221; It&#8217;s required.</font></p>
<p>&nbsp; &nbsp; try {<br />
&nbsp; &nbsp; &nbsp; <font color="green">// Make the filter.</font><br />
&nbsp; &nbsp; &nbsp; Expression property = filterFactory.property(&#8221;<font color="red">constraintProperty</font>&#8220;);<br />
&nbsp; &nbsp; &nbsp; Expression value = filterFactory.literal(&#8221;<font color="red">constraintValue</font>&#8220;);<br />
&nbsp; &nbsp; &nbsp; Filter filter = filterFactory.equals(property, value);  <font color="green">// This is an org.opengis.filter.Filter.</font></p>
<p>&nbsp; &nbsp; &nbsp; FeatureStore features = (FeatureStore) wfs.getFeatureSource(layer);</p>
<p>&nbsp; &nbsp; &nbsp; <font color="green">// Set the transaction. Otherwise, we can&#8217;t commit our changes later on.</font><br />
&nbsp; &nbsp; &nbsp; features.setTransaction(update);</p>
<p>&nbsp; &nbsp; &nbsp; <font color="green">// Fetch the property from the FeatureType schema so that we can update it with the new value.</font><br />
&nbsp; &nbsp; &nbsp; FeatureType schema = features.getSchema();<br />
&nbsp; &nbsp; &nbsp; AttributeType atrributeToUpdate = schema.getAttributeType(propertyToUpdate);    </p>
<p>&nbsp; &nbsp; &nbsp; features.modifyFeatures(atrributeToUpdate, updatedValue, (org.geotools.filter.Filter) filter);  <font color="green">// There&#8217;s that casting again.</font></p>
<p>&nbsp; &nbsp; &nbsp; <font color="green">// Record the modifications.</font><br />
&nbsp; &nbsp; &nbsp;&nbsp;<a href="http://update.com" title="http://update. " target="_blank">update.com</a>mit();</p>
<p>&nbsp; &nbsp; &nbsp; } catch (IOException e) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; e.printStackTrace();<br />
&nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; }<br />
}
</p></blockquote>
<p>
Anyway, I hope this saves some people the hassle of tearing through the Javadocs for GeoTools. Also, if there&#8217;s a better way to do what I did, <b>please</b> let me know. Happy GIS-ing.
</p>
<p><font size="1" color="#999">Technorati Tags: <a href="http://www.technorati.com/tag/geotools" rel="tag">geotools</a>, <a href="http://www.technorati.com/tag/geoserver" rel="tag">geoserver</a>, <a href="http://www.technorati.com/tag/opengis" rel="tag">opengis</a>, <a href="http://www.technorati.com/tag/ogc" rel="tag">ogc</a>, <a href="http://www.technorati.com/tag/java" rel="tag">java</a>, <a href="http://www.technorati.com/tag/wfs" rel="tag">wfs</a>, <a href="http://www.technorati.com/tag/wfs-t" rel="tag">wfs-t</a>, <a href="http://www.technorati.com/tag/shapefile" rel="tag">shapefile</a>, <a href="http://www.technorati.com/tag/update" rel="tag">update</a>, <a href="http://www.technorati.com/tag/request" rel="tag">request</a>, <a href="http://www.technorati.com/tag/javadoc" rel="tag">javadoc</a>, <a href="http://www.technorati.com/tag/gis" rel="tag">gis</a>, <a href="http://www.technorati.com/tag/esri" rel="tag">esri</a>, <a href="http://www.technorati.com/tag/xml" rel="tag">xml</a></font></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/jreyes/2007/08/03/geotools-wfs-t-update-request/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Genetics by the Poolside</title>
		<link>http://blogs.law.harvard.edu/jreyes/2007/07/08/genetics-by-the-poolside/</link>
		<comments>http://blogs.law.harvard.edu/jreyes/2007/07/08/genetics-by-the-poolside/#comments</comments>
		<pubDate>Sun, 08 Jul 2007 16:52:45 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/jreyes/2007/07/08/genetics-by-the-poolside/</guid>
		<description><![CDATA[
Happy Independence Day! To celebrate our nation&#8217;s founding, my family and I often hit up the Cape. This year was no exception, there&#8217;s little to report. The weather has been spotty: a little rain here, a few showers there, but nothing substantial. Someone was playing bagpipes the other night. And I witnessed a gruesome car [...]]]></description>
			<content:encoded><![CDATA[<p>
Happy Independence Day! To celebrate our nation&#8217;s founding, my family and I often hit up the Cape. This year was no exception, there&#8217;s little to report. The weather has been spotty: a little rain here, a few showers there, but nothing substantial. Someone was playing bagpipes the other night. And I witnessed a gruesome car accident a few feet from my balcony during the fireworks spectacular. A mass of people immediately sprang up to help the man, direct traffic, and call 911 repeatedly until emergency vehicles could make their way here. I was genuinely impressed by the response, professional and make-shift alike. Within seconds the response team had the guy off to the hospital in no time flat. I think it prudent not to speculate on the cyclist&#8217;s health. I don&#8217;t want to jinx anything, you know.
</p>
<p>
And since it&#8217;s vacation time, I&#8217;m here, at the kitchen table, on my laptop, implementing genetic algorithms. Maybe later I&#8217;ll describe what I did. Maybe if I do, someone will be able to tell me if my results make any sense. Whether or not my programs reproduce the classical results isn&#8217;t really the point, though. Look at the evolution of strategies for playing the <a href="http://www.dougsimpson.com/blog/archives/000248.html">iterated prisoner&#8217;s dilemma</a>: they make perfect modern art tile mosaics! I bet someone&#8217;d love to have this pattern on their pool floor or garden wall. (Don&#8217;t be alarmed that they don&#8217;t appear all that related. Each row in black represents the fittest individual from one of a number of independent runs. That is, they probably never had the chance to meet each other.) Imagine the graphic tastefully obscured by flowering vines. (<a href="http://blogs.law.harvard.edu/jreyes/files/2007/07/pd-ga.png" rel="lightbox">Click on it for a larger image.</a>)
</p>
<p>
<a href="http://blogs.law.harvard.edu/jreyes/files/2007/07/pd-ga.png" rel="lightbox" title="Several runs of the Iterated Prisoner's Dilemma using a dynamic fitness landscape and a genetic algorithm."><img src="http://blogs.law.harvard.edu/jreyes/files/2007/07/pd-ga-thumbnail.png"></a>
</p>
<p>
I can see an upside-down raccoon in it. What can you find?</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/jreyes/2007/07/08/genetics-by-the-poolside/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Crab Canon</title>
		<link>http://blogs.law.harvard.edu/jreyes/2007/04/05/crab-canon/</link>
		<comments>http://blogs.law.harvard.edu/jreyes/2007/04/05/crab-canon/#comments</comments>
		<pubDate>Thu, 05 Apr 2007 05:35:51 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Creativity]]></category>
		<category><![CDATA[Entertainment]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/jreyes/2007/04/05/crab-canon/</guid>
		<description><![CDATA[
This week we had to create a sound collage for my computational media class. I didn&#8217;t set aside a lot of time to work on it, so it became something of a last-minute project. Today I spent most of my day meeting with bioinformatics folk to discuss herberia and taxa and distributed architectures. I may [...]]]></description>
			<content:encoded><![CDATA[<p>
This week we had to create a sound collage for my computational media class. I didn&#8217;t set aside a lot of time to work on it, so it became something of a last-minute project. Today I spent most of my day meeting with bioinformatics folk to discuss herberia and taxa and distributed architectures. I may end up working in a CS research group playing with this (or other) stuff. Anyway, by the time I got home, I only had a few hours to start and finish my project. Luckily, I&#8217;ve been toying around with MIDI on my own. So I took a line from J.S. Bach and tried to reconstruct part of his <a href="http://en.wikipedia.org/wiki/Crab_canon">crab canon</a>. (This amounts to reversing, compositing, and normalizing a small bit of data.)<br />
<br />
<a href="http://www.gsd.harvard.edu/users/jreyes/theme.html" target="_blank">Here&#8217;s what I started with.</a>
</p>
<p>
Two hours later, <a href="http://www.gsd.harvard.edu/users/jreyes/crab.html" target="_blank">here&#8217;s what I ended up with</a>. True it&#8217;s not precisely a crab canon&#8212;I prefixed a short introduction before the canon starts proper. But if you played from then on backwards, it would sound exactly the same. That&#8217;s right: I one-upped Bach. He thought he was writing a musical palindrome. Unfortunately, he couldn&#8217;t reverse the attack and decay of each note. He needed me to come along and help him out with the minor, technical details. There&#8217;s no shame in that.
</p>
<p>
You can even <a href="http://blogs.law.harvard.edu/jreyes/wp-admin/01%20Crab%20Canon.mp3">download my project</a> in spiffy MP3 format if you like. I&#8217;m just that sort of guy. Giving, courteous, clean.
</p>
<p>
<a href="http://blogs.law.harvard.edu/jreyes/files/2007/04/01%20Crab%20Canon.mp3"><img src="http://blogs.law.harvard.edu/jreyes/files/2007/04/mp3.png"> Crab Canon.mp3</a>
</p>
<p><font size="1" color="#999">Technorati Tags:<a href="http://www.technorati.com/tag/digital" rel="tag">digital</a>, <a href="http://www.technorati.com/tag/music" rel="tag">music</a>, <a href="http://www.technorati.com/tag/media computation" rel="tag">media computation</a>, <a href="http://www.technorati.com/tag/java" rel="tag">java</a>, <a href="http://www.technorati.com/tag/cs110" rel="tag">cs110</a>, <a href="http://www.technorati.com/tag/j.s. bach" rel="tag">j.s. bach</a>, <a href="http://www.technorati.com/tag/crab canon" rel="tag">crab canon</a>, <a href="http://www.technorati.com/tag/collage" rel="tag">collage</a></font></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/jreyes/2007/04/05/crab-canon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://blogs.law.harvard.edu/jreyes/files/2007/04/01%20Crab%20Canon.mp3" length="1329655" type="audio/mpeg" />
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Games: a Ludic Structure for Problem-Solving</title>
		<link>http://blogs.law.harvard.edu/jreyes/2007/03/28/critical-thinking-journalgames-a-ludic-structure-for-problem-solvin/</link>
		<comments>http://blogs.law.harvard.edu/jreyes/2007/03/28/critical-thinking-journalgames-a-ludic-structure-for-problem-solvin/#comments</comments>
		<pubDate>Wed, 28 Mar 2007 18:04:57 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Creativity]]></category>
		<category><![CDATA[Critical Thinking]]></category>
		<category><![CDATA[Education]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[Society]]></category>
		<category><![CDATA[Sport]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/jreyes/2007/03/28/critical-thinking-journalgames-a-ludic</guid>
		<description><![CDATA[
Today I&#8217;ve decided to post a journal together with a longer paper about games. You hear all the time that we need to inject more play into education, that we need to return to childhood, etc. But why? You don&#8217;t as frequently hear why play is useful in education. People claim things like &#8220;If learning [...]]]></description>
			<content:encoded><![CDATA[<p>
Today I&#8217;ve decided to post a journal together with a longer paper about games. You hear all the time that we need to inject more play into education, that we need to return to childhood, etc. But why? You don&#8217;t as frequently hear why play is useful in education. People claim things like &#8220;If learning is fun, children will learn better.&#8221; I&#8217;m not sure of the connection. I suppose that if kids are engaged in learning, then they have a better chance of actually picking something new up than if they&#8217;re not trying to learn at all. That&#8217;s like saying if you look for something you have a better chance of finding it then if you don&#8217;t look at all. Sure, I buy that. But why play? By the same argument, we could just as easily pay kids to go to school and do their homework.
</p>
<p>
Of course some people do give reasons why play is useful. In these two papers, I&#8217;m building on some insights found in a 1933 paper by Lev Vygotsky entitled <a href="http://www.marxists.org/archive/vygotsky/works/1933/play.htm">Play and its role in the Mental Development of the Child</a>. (Vygotsky, you may well know, is one of my current heroes.) I remind the reader that in play, you can find all sorts of higher-order thinking skills taking place. Imaginary play is a very natural, distilled, abstractly difficult thing to do. Yet kids seem to do it on their own anyway, and before they even step foot in a classroom. If taught effectively, I think play is a useful vehicle for transfer of skills and tons of that ever-so-hot interdisciplinary work that goes on nowadays. (Wait until I get my genetic algorithmic music up and running.)
</p>
<p>
<a href="http://blogs.law.harvard.edu/jreyes/files/2007/03/CCT601-2007-03-06%20Journal%204.pdf"><img src="http://blogs.law.harvard.edu/jreyes/files/2006/11/pdf.gif" alt="Journal 4" /> Journal 4: Methodological Doubt, Belief, and the Structure of Play</a><br />
<br />
<a href="http://blogs.law.harvard.edu/jreyes/files/2007/03/CCT601-2007-03-19%20Reflection%20Paper%202.pdf"><img src="http://blogs.law.harvard.edu/jreyes/files/2006/11/pdf.gif" alt="Paper 2" /> Reflection Paper 2: Decision-making as Game: A Mode of Prediction and Solution </a>
</p>
<p>
<a href="http://scholarworks.umass.edu/peter_elbow/">Peter Elbow</a> introduced concepts of methodological doubt and belief in his book <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FEmbracing-Contraries-Explorations-Learning-Teaching%2Fdp%2F0195046617&amp;tag=rabbithole0d-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325">Embracing Contraries: Explorations in Learning and Teaching</a><img src="http://www.assoc-amazon.com/e/ir?t=rabbithole0d-20&amp;l=ur2&amp;o=1" width="1" height="1" border="0" alt="" />. They&#8217;re central to his <a href="http://scholarworks.umass.edu/peter_elbow/10/">believing game</a> and doubting game. Traditionally, doubt has been used as the primary tool in critical thinking. This unbalanced attention really makes a lot of analysis blind to new insights that can be gleaned from a moment of pure, suspended disbelief. (My ego won&#8217;t let me pass up an opportunity to say that both games show up automatically in <a href="http://blogs.law.harvard.edu/jreyes/2007/03/10/critical-thinking-journalsthe-coffee-mug-model/">my coffee mug model of classroom education</a>.)
</p>
<p>
In my first paper I remark that all games require its participants to engage in the believing game&#8212;they have to believe that the rules imposed by the game are real and that the game itself is real. There are no consequences in any game if you don&#8217;t except them. You can always pick up the ball with your hands in soccer, unless you firmly believe that you can&#8217;t. For this reason, we might frame any situation as a game.
</p>
<p>
In the second paper, I extend my ideas to show that framing a situation as a game can greatly improve your power to predict behavior and arrive at winning strategies by simply considering the acceptable moves in your game. To illustrate my point, I work through a problem of the type sometimes given in consulting or computer science job interviews. The example shows, additionally, how mathematical reasoning (which I believe is no different than plain, old, vanilla reasoning) can be used to solve a problem without once using &#8220;math.&#8221;
</p>
<p>
As always, please comment freely. I&#8217;d love to get some feedback on this stuff.
</p>
<p><font size="1" color="#999">Technorati Tags: <a href="http://www.technorati.com/tag/vygotsky" rel="tag">vygotsky</a>, <a href="http://www.technorati.com/tag/play" rel="tag">play</a>, <a href="http://www.technorati.com/tag/imagination" rel="tag">imagination</a>, <a href="http://www.technorati.com/tag/games" rel="tag">games</a>, <a href="http://www.technorati.com/tag/rules" rel="tag">rules</a>, <a href="http://www.technorati.com/tag/prediction" rel="tag">prediction</a>, <a href="http://www.technorati.com/tag/decision-making" rel="tag">decision-making</a>, <a href="http://www.technorati.com/tag/higher-order knowledge" rel="tag">higher-order knowledge</a>, <a href="http://www.technorati.com/tag/belief" rel="tag">belief</a>, <a href="http://www.technorati.com/tag/doubt" rel="tag">doubt</a>, <a href="http://www.technorati.com/tag/mathematical reasoning" rel="tag">mathematical reasoning</a>, <a href="http://www.technorati.com/tag/education" rel="tag">education</a>, <a href="http://www.technorati.com/tag/learning" rel="tag">learning</a>, <a href="http://www.technorati.com/tag/solution finding" rel="tag">solution finding</a>, <a href="http://www.technorati.com/tag/transfer" rel="tag">transfer</a>, <a href="http://www.technorati.com/tag/cognition" rel="tag">cognition</a>, <a href="http://www.technorati.com/tag/thinking" rel="tag">thinking</a>, <a href="http://www.technorati.com/tag/critical thinking" rel="tag">critical thinking</a>, <a href="http://www.technorati.com/tag/creativity" rel="tag">creativity</a>, <a href="http://www.technorati.com/tag/soccer" rel="tag">soccer</a>, <a href="http://www.technorati.com/tag/peter elbow" rel="tag">peter elbow</a>, <a href="http://www.technorati.com/tag/epistemology" rel="tag">epistemology</a>, <a href="http://www.technorati.com/tag/coffee mug model" rel="tag">coffee mug model</a></font></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/jreyes/2007/03/28/critical-thinking-journalgames-a-ludic-structure-for-problem-solvin/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>I&#8217;ve Landed.</title>
		<link>http://blogs.law.harvard.edu/jreyes/2007/03/13/ive-landed/</link>
		<comments>http://blogs.law.harvard.edu/jreyes/2007/03/13/ive-landed/#comments</comments>
		<pubDate>Tue, 13 Mar 2007 18:38:24 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/jreyes/2007/03/13/ive-landed/</guid>
		<description><![CDATA[
Today I was reverse-stalking the links pointing to my site when I discovered that Planet 02138 uses my RSS feed to fill their content. To be honest, I&#8217;m a little touched. At first I thought it might be associated with that magazine I don&#8217;t read with the same zip code. Fortunately, it&#8217;s not. If I [...]]]></description>
			<content:encoded><![CDATA[<p>
Today I was reverse-stalking the links pointing to my site when I discovered that <a href="http://planet02138.com/">Planet 02138</a> uses my RSS feed to fill their content. To be honest, I&#8217;m a little touched. At first I thought it might be associated with that <a href="http://www.02138mag.com/">magazine I don&#8217;t read with the same zip code</a>. Fortunately, it&#8217;s not. If I were to guess, it&#8217;s another service offered by the kind folks at the <a href="http://cyber.law.harvard.edu/home/">Berkman Center</a>.
</p>
<p>
Anyway, here&#8217;s how the Planet explains itself:</p>
<blockquote><p>
Planet 02138 is a collection of Harvard blogs. It is a sample of opinions and ramblings by Harvard students, faculty, and alumni.
</p></blockquote>
<p>From what I saw, they nailed it head-on.
</p>
<p>
You can make your own feed reader with the software from <a href="http://www.planetplanet.org/">Planet Planet</a>. Gosh, that&#8217;s fun to say.
</p>
<p>
Trolling their blogroll inspired me to update my own. Sure, my RSS reader knows what I&#8217;m currently reading&#8212;somehow my blog got left behind, though. After all, how are you going to know what I&#8217;m [likely to be] reading?
</p>
<p><font size="1" color="#999">Technorati Tags:<a href="http://www.technorati.com/tag/planet" rel="tag">planet</a>, <a href="http://www.technorati.com/tag/02138" rel="tag">02138</a>, <a href="http://www.technorati.com/tag/feed reader" rel="tag">feed reader</a>, <a href="http://www.technorati.com/tag/opml" rel="tag">opml</a>, <a href="http://www.technorati.com/tag/harvard" rel="tag">harvard</a>, <a href="http://www.technorati.com/tag/blogs" rel="tag">blogs</a>, <a href="http://www.technorati.com/tag/berkman center" rel="tag">berkman center</a>, <a href="http://www.technorati.com/tag/blogroll" rel="tag">blogroll</a></font></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/jreyes/2007/03/13/ive-landed/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Grassy Field</title>
		<link>http://blogs.law.harvard.edu/jreyes/2007/03/11/grassy-field/</link>
		<comments>http://blogs.law.harvard.edu/jreyes/2007/03/11/grassy-field/#comments</comments>
		<pubDate>Sun, 11 Mar 2007 05:08:44 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Creativity]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/jreyes/2007/03/11/grassy-field/</guid>
		<description><![CDATA[
Since all I do these days is post my school projects to my blog, here&#8217;s another one for you. This week we had to create a collage. The requirements were pretty bare: at least five instances of the picture, one rotation, one rescaling, and at least one color modification. Try to spot each of the [...]]]></description>
			<content:encoded><![CDATA[<p>
Since all I do these days is post my school projects to my blog, here&#8217;s another one for you. This week we had to create a collage. The requirements were pretty bare: at least five instances of the picture, one rotation, one rescaling, and at least one color modification. Try to spot each of the requirements in the final product below. (Maybe you&#8217;ve seen the original image before.) I had planned on using longer strips than the squares I ended up implementing, but I got lazy. The checkered effect is a little busy for my tastes; hopefully it&#8217;ll make the grade.
</p>
<p>
I tried for freakin&#8217; ever to get the sky to soft clip to the hill top. I was able to adapt the intermediate image technique described in <a href="http://java.sun.com/mailers/techtips/corejava/2006/tt0923.html">this article</a> to create a tacky sun (not shown for art&#8217;s sake), but not for much more. Instead, I used the built-in, jagged <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/awt/Graphics.html#setClip(int,%20int,%20int,%20int)">setClip()</a> method native to the <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/awt/Graphics2D.html">java.awt.Graphics2D</a> class. In case you were wondering, the clip was made with about six straight lines. I hate spline fitting, and try never to use curves&#8212;especially if line segments will do just fine. File that little tidbit away, it could be useful someday.
</p>
<p>
But convolutions rock. I&#8217;ve always thought so. Ever since I started using them to do signal processing in astronomy class. Our professor made us do a lot of convolutions using a visual calculus that really changed the way I thought about calculation in general. Drawing it out refined my sense of geometric interaction and avoided a lot of messy integrals. Here&#8217;s to qualitative methods: hurrah!
</p>
<p align="center">
<img src="http://blogs.law.harvard.edu/jreyes/files/2007/03/field.png" alt="A field in collage" />
</p>
<p><font size="1" color="#999">Technorati Tags:<a href="http://www.technorati.com/tag/java" rel="tag">java</a>, <a href="http://www.technorati.com/tag/media computation" rel="tag">media computation</a>, <a href="http://www.technorati.com/tag/graphics2d" rel="tag">graphics2d</a>, <a href="http://www.technorati.com/tag/cs110" rel="tag">cs110</a>, <a href="http://www.technorati.com/tag/field" rel="tag">field</a>, <a href="http://www.technorati.com/tag/convolution" rel="tag">convolution</a>, <a href="http://www.technorati.com/tag/collage" rel="tag">collage</a></font></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/jreyes/2007/03/11/grassy-field/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>A Flower Garden</title>
		<link>http://blogs.law.harvard.edu/jreyes/2007/02/21/a-flower-garden/</link>
		<comments>http://blogs.law.harvard.edu/jreyes/2007/02/21/a-flower-garden/#comments</comments>
		<pubDate>Wed, 21 Feb 2007 18:21:02 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/jreyes/2007/02/21/a-flower-garden/</guid>
		<description><![CDATA[
Here we go. Below is a screen shot from assignment number 2. This time I grew a wild flower garden. Every time the program runs, you end up with thirteen orange and pink flowers and 1,500 blades of grass, but where the flowers bloom and where each leaf of grass falls is up to the [...]]]></description>
			<content:encoded><![CDATA[<p>
Here we go. Below is a screen shot from assignment number 2. This time I grew a wild flower garden. Every time the program runs, you end up with thirteen orange and pink flowers and 1,500 blades of grass, but where the flowers bloom and where each leaf of grass falls is up to the computer.
</p>
<p align="center">
<img src="http://blogs.law.harvard.edu/jreyes/files/2007/02/flowers.png" alt="Programmed Wild Flower Garden">
</p>
<p>
I&#8217;m really pleased with the grass. Doesn&#8217;t it look like that plastic shred you find in easter baskets?
</p>
<p><font size="1" color="#999">Technorati Tags:<a href="http://www.technorati.com/tag/logo" rel="tag">logo</a>, <a href="http://www.technorati.com/tag/programming" rel="tag">programming</a>, <a href="http://www.technorati.com/tag/wild flowers" rel="tag">wild flowers</a>, <a href="http://www.technorati.com/tag/garden" rel="tag">garden</a>, <a href="http://www.technorati.com/tag/java" rel="tag">java</a>, <a href="http://www.technorati.com/tag/graphics" rel="tag">graphics</a>, <a href="http://www.technorati.com/tag/cs110" rel="tag">cs110</a>, <a href="http://www.technorati.com/tag/grass" rel="tag">grass</a></font></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/jreyes/2007/02/21/a-flower-garden/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>My Initials</title>
		<link>http://blogs.law.harvard.edu/jreyes/2007/02/14/my-initials/</link>
		<comments>http://blogs.law.harvard.edu/jreyes/2007/02/14/my-initials/#comments</comments>
		<pubDate>Wed, 14 Feb 2007 22:14:53 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/jreyes/2007/02/14/my-initials/</guid>
		<description><![CDATA[
After only 10 methods spanning 265 lines of code, including comments, it&#8217;s done (and on time)! May I present to you the first programming assignment for my first programming class:





It even reflects my hispanicity. Is it not pleasing to the eye?


No offense, Papert, but there&#8217;s got to be a better way than LOGO1.


1 I&#8217;ve since [...]]]></description>
			<content:encoded><![CDATA[<p>
After only 10 methods spanning 265 lines of code, including comments, it&#8217;s done (and on time)! May I present to you the first programming assignment for my first programming class:
</p>
<p align="center">
<img src="http://blogs.law.harvard.edu/jreyes/files/2007/02/initials.png">
</p>
<p>
It even reflects my hispanicity. Is it not pleasing to the eye?
</p>
<p>
No offense, Papert, but there&#8217;s got to be a better way than LOGO<sup>1</sup>.
</p>
<p>
<sup>1</sup> I&#8217;ve since changed my mind. See my comments below.
</p>
<p><font size="1" color="#999">Technorati Tags:<a href="http://www.technorati.com/tag/logo" rel="tag">logo</a>, <a href="http://www.technorati.com/tag/programming" rel="tag">programming</a>, <a href="http://www.technorati.com/tag/papert" rel="tag">papert</a>, <a href="http://www.technorati.com/tag/initials" rel="tag">initials</a>, <a href="http://www.technorati.com/tag/java" rel="tag">java</a>, <a href="http://www.technorati.com/tag/graphics" rel="tag">graphics</a>, <a href="http://www.technorati.com/tag/cs110" rel="tag">cs110</a>, <a href="http://www.technorati.com/tag/learning" rel="tag">learning</a></font></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/jreyes/2007/02/14/my-initials/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Backwards Compatibility</title>
		<link>http://blogs.law.harvard.edu/jreyes/2007/01/15/backwards-compatibility/</link>
		<comments>http://blogs.law.harvard.edu/jreyes/2007/01/15/backwards-compatibility/#comments</comments>
		<pubDate>Mon, 15 Jan 2007 20:11:12 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/jreyes/2007/01/15/backwards-compatibility/</guid>
		<description><![CDATA[
This weekend I took the Chinatown bus down to New York to visit my army special forces friends Danny and Mike and to meet their army special forces friend Zack, all up from North Carolina. Whenever Danny makes his way up the East Coast, a bunch of us convene: a few from Boston, a handful [...]]]></description>
			<content:encoded><![CDATA[<p>
This weekend I took the Chinatown bus down to New York to visit my army special forces friends Danny and Mike and to meet their army special forces friend Zack, all up from North Carolina. Whenever Danny makes his way up the East Coast, a bunch of us convene: a few from Boston, a handful from New York, and one from DC. We&#8217;re a geographically diverse group of friends, but that doesn&#8217;t stop us. We make an effort. And that&#8217;s the problem&#8212;I think maybe we&#8217;re a bit misdirected.
</p>
<p>
Saturday, we went to a sports bar called Proof. (I immediately wondered if there was so big a math crowd in this part of the city as to sustain a bar, but I quickly realized that they probably didn&#8217;t mean a mathematical proof. Eighty proof was more the feel of the place.) The floors were the kind of dirty that black, matte surfaces always are, which set up a visual cue for the rest of the decor to follow. Everything about the bar was dark hip in that cold, uninviting way that encourages you to have fun to prove to others that you&#8217;re having fun. The neon lights that pierced through from behind the bar coupled with the bartendress&#8217;s bad dye job and caked make-up put me in the psychological dugeon of a Celine Dion concert. Proof relies on happy hour gimmicks which simultaneously feature Bud Light and a multitude of flavoured Stoli. (You could tell from the looks of the clientele that they had found their niche.) I&#8217;m not sure anyone in the bar knew why they were watching a football game. I certainly didn&#8217;t.
</p>
<p>
We established early on that no one in our party had any opinion either for or against the Colts or the Ravens. A lady bordering us said she liked the Colts, so one of us loudly cheered for her team. Lisa, Danny, and I left our uncomfortable and unsociable seats and headed to the burger joint next door just before half-time, where we almost had time enough to talk. The guy who had dragged us to Proof didn&#8217;t pay attention to the game at all. I overheard his girlfriend trying to explain to him who Adam Vinatieri is. It was no use; he wasn&#8217;t interested. By the time he realized that the three of us had left, he mobilized the rest of troops. We were going to leave. To sit down. To have dinner. Somewhere else.
</p>
<p>
Earlier that day I caught some awful brunch with my good friend Baca. We went to some up-and-coming place in Nolita called <a href="http://www.public-nyc.com/">Public</a>. Its theme: public spaces. The menu comes on a clip board. Apparently public spaces are industrial and water-stained. I had two poached eggs on garlic yogurt with kirmizi biber butter. I pressed our waitress before ordering and she admitted that &#8220;No, it&#8217;s not really butter.&#8221; She was right&#8212;it&#8217;s an oil with too much flavour for its own good. I let the hipster get the best of me. It could&#8217;ve been because I was wearing herring bone. Still, I wanted to go out to brunch. Baca merely accommodated me. Sorry, Baca.
</p>
<p>
Now here&#8217;s my point. In both instances, I hated the place we went to. But the sports bar really left me angry while, the food aside, I had a really good time at brunch. So, on the bus ride back to Boston, I started thinking why is that? And the secret is a problem in good user design.
</p>
<p>
Software designers sometimes leave in features that could be considered obsolete, needlessly complicated and confusing, or otherwise just bad in the name of <b>backwards compatibility</b>. The idea is that even if it&#8217;s not necessarily the best way a thing can be done, it&#8217;s a way that the user knows and therefore will expect will work, if poorly. And that&#8217;s right. The user might very well expect to see an old feature in a new realease. But expectation isn&#8217;t a good enough justification for doing something. It&#8217;s sort of like saying, &#8220;The user should be abused because the user is used to being abused.&#8221; (You might&#8217;ve heard the argument, &#8220;He may be the Devil, but at least he&#8217;s <i>my</i> Devil.&#8221;)  People do this sort of thing all the time in all fields. Decisions made in the past are often carried well passed their realm of usefulness into the future for the sake of mindless adherence to tradition. Not to do so is like admitting your were wrong, or at least that you&#8217;re wrong now. Why do you think we won&#8217;t revise our plan for Iraq? Designers who throw in features they know to less than productive to ensure backwards compatibility have confused a means as an end.
</p>
<p>
Software is supposed to be a vehicle to help people do things that they otherwise could not have done on their own. That is, the software&#8212;like alcohol or sports bars&#8211;is supposed to be a servant, not the master. But that&#8217;s the difference between my two stories. In the first, we went to Proof because someone thought we were supposed to watch the game. Really, no one wanted to&#8212;the Pats played on Sunday, not Saturday. (We all went to dinner during the second and arguably more important half, you remember.) But brunch? I wanted to go brunch. The fact that the food sucked was only incidental. I wanted to spend time dining with Baca. And Public, bad though it was, did the trick. It provided a forum for us to catch up. That&#8217;s what I expected to do this weekend. Instead, we often got caught up doing things that are supposed to be fun rather than actually having fun.
</p>
<p>
The lesson learned is an old one: hang out with your friends at a bar, don&#8217;t hang out with a bar in front of your friends.
</p>
<p><font size="1" color="#999">Technorati Tags:<a href="http://www.technorati.com/tag/user interface" rel="tag">user interface</a>, <a href="http://www.technorati.com/tag/design" rel="tag">design</a>, <a href="http://www.technorati.com/tag/new york" rel="tag">new york</a>, <a href="http://www.technorati.com/tag/dining" rel="tag">dining</a>, <a href="http://www.technorati.com/tag/brunch" rel="tag">brunch</a>, <a href="http://www.technorati.com/tag/friends" rel="tag">friends</a>, <a href="http://www.technorati.com/tag/backwards compatibility" rel="tag">backwards compatibility</a>, <a href="http://www.technorati.com/tag/ends" rel="tag">ends</a>, <a href="http://www.technorati.com/tag/means" rel="tag">means</a>, <a href="http://www.technorati.com/tag/iraq" rel="tag">iraq</a>, <a href="http://www.technorati.com/tag/decision" rel="tag">decision</a>, <a href="http://www.technorati.com/tag/tradition" rel="tag">tradition</a>, <a href="http://www.technorati.com/tag/software" rel="tag">software</a></font></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/jreyes/2007/01/15/backwards-compatibility/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>The State of Grafitti: Yuppie as Mascot</title>
		<link>http://blogs.law.harvard.edu/jreyes/2006/12/31/the-state-of-grafitti-yuppie-as-mascot/</link>
		<comments>http://blogs.law.harvard.edu/jreyes/2006/12/31/the-state-of-grafitti-yuppie-as-mascot/#comments</comments>
		<pubDate>Sun, 31 Dec 2006 20:44:32 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[Society]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/jreyes/2006/12/31/the-state-of-grafitti-yuppie-as-mascot</guid>
		<description><![CDATA[
About a year ago, I was at the Park Street station on my way back to Cambridge. As I waited for the train to come, I did what I always do when I&#8217;m waiting without a book: I paced the end of the platform. Rather than slowly pass my foot over the knobs of the [...]]]></description>
			<content:encoded><![CDATA[<p>
About a year ago, I was at the Park Street station on my way back to Cambridge. As I waited for the train to come, I did what I always do when I&#8217;m waiting without a book: I paced the end of the platform. Rather than slowly pass my foot over the knobs of the textured, yellow safety strip,&#8212;a favorite pastime of mine&#8212;I kept to the flat brick on a well-defined route that visits the supporting columns which dwell nearest to the tunnel&#8217;s opening.
</p>
<p>
Normally I&#8217;m not struck by public graffiti, but every once in a while something unexpected crops up. This time one of my columns read: &#8220;Kill all yuppies.&#8221;
</p>
<p>
I was very excited by this message. No, I&#8217;m not in favor of killing all the yuppies. That suggestion&#8217;d put me too close at risk. There&#8217;s a very good chance, indeed, that I&#8217;m a yuppie. So, no. Please be kind to the yuppies. But here&#8217;s what&#8217;s different. Normally the graffiti that I&#8217;ve encountered are either some sort of tag&#8212;you know, a personal statement of existence and potential ownership, &#8220;Kilroy was here&#8221; or &#8220;AlL St*R&#8221; or something along those lines&#8212;or alternatively they are some commitment of love or hate (often accompanied by a slur or two). You seen them, something like &#8220;Joe is a fag&#8221; or &#8220;I love Tiffany.&#8221; Anyway, all of these examples are personally directed. They don&#8217;t extend beyond an individual. Sometimes I&#8217;ll find one that condemns a whole group of people, like my yuppies example, scrawled on a public alleyway. But those even those are gang-related or race-related. Yuppies represent something new.
</p>
<p>
Whoever wrote it got my attention because his hatred was not race-directed. It points to a larger social movement. The new segregation, if it is really new, will be intellect. And these upwardly mobile persons are central enough to earn the distinguished role of spokesperson. But what exactly are yuppies mascots of? Well, that sort of brings me to some more recent graffiti.
</p>
<p>
The Ashmont train station is undergoing some pretty hefty repairs. Officials have suspended the Mattapan High Speed Line service for a year, and the train station is hidden from plain sight by several, several ton mounds of dirt. Like most other forms of transportation in the city, the Ashmont station is going underground. It&#8217;ll take some time before things are back in order. For now, there are lots of make-shift wooden structures to take the places of the bus depot and station entrance. And that means there&#8217;s plenty of board space for community art&#8212;I mean graffiti.
</p>
<p>
The last time I was at Ashmont I noticed some of the newer pieces as I walked by one of the wooden panels. This time a website caught my eye. I haven&#8217;t seen many hypertext tags outside of the internet, but there it was: a link to someone&#8217;s myspace page. Kilroy has entered a new age and he&#8217;s updated his message. Now the statement is &#8220;I am not here, I&#8217;m <a href="http://blogs.law.harvard.edu/jreyes">here</a>. Come find me.&#8221; It&#8217;s a revolution. Personalization on the web is at an all-time high, and movers in the field want more of it. Collaborative filtering, social navigation, blogs! They&#8217;re all in style, and they don&#8217;t look like they&#8217;re going to go away any time soon. I can&#8217;t say I mind it, either. In fact, I want to be more a part of it.
</p>
<p>
This is not the same technological revolution that your slightly older brother talked about only decades ago. No, the paradigm is different: we can read the writing on the wall. Literally. Before technology brought with it an increased level of impersonality. The assembly-line metaphor bled into everything&#8212;it&#8217;s still around, of course. Don&#8217;t worry, the transactional framework driven by the glory of mass manipulation of raw goods to form an endless supply of identical product is still very much alive. And people are still applying manufacturing-inspired methods completely out of context. And the effect is still very isolating. But lo! the very same push to maximize profit that once aimed to cut time and kill interpersonal relationships has turned a corner. Personalization is the new rage.
</p>
<p>
But will personalization help build bridges among people; won&#8217;t it keep us even more securely glued to our seats in front of our computers? I&#8217;m afraid that it can. Technologically-backed social ventures, like AOL Instant Messenger and other chat programs, have made it easier for the quiet kids to remain quiet and alone. Chat tools give the user the appearance that they&#8217;re interacting with other people. But some researchers suggest that the analogy is only that: apparent. The real satisfaction one gains from honest-to-goodness, face-to-face conversation is so much greater than its virtual manifestation that it&#8217;s almost silly to make the comparison. So, what&#8217;s going on?
</p>
<p>
The invitational nature of MySpace is different than AIM. A person&#8217;s page is like his home. Each click to that site is really a visit. That&#8217;s why it makes the news so often. Sometimes the visits aren&#8217;t just virtual. And everyone uses it: college kids, little kids, married couples. The range of demographics represented by MySpace&#8217;s users is enormous. Unlike Friendster, which originally withheld a user&#8217;s access to a stranger&#8217;s page by default, MySpace let everyone see everyone else from the get-go. Friendster was a place for people who were already friends. MySpace, I believe, was built to get people to go to and listen to new bands in concert. The idea that you&#8217;d actually meet strangers was the founding idea. Now it&#8217;s just a place find others you&#8217;d like to bone à la Craig&#8217;s List&#8217;s personals but less so. But the idea that you might meet the person attached to the website is still very much there. Isn&#8217;t that exactly what that graffiti from Ashmont Station was all about? The internet takes all the scariness out of meeting a stranger, because you don&#8217;t physically meet, and the meeting is still completely anonymous. (There&#8217;s a trade-off, though. The relationships that form are even more tenuous than those so-called and ever important &#8220;weak bonds.&#8221; Online relationships tend to be superficial and sometimes socially damaging. Like I said before, they permit the loners to find each other and stay alone. Even those of us who aren&#8217;t loners end up as loners the longer we stay online rather than outside.)
</p>
<p>
So we&#8217;ve found a cause for our mascots. Like the term itself, today&#8217;s yuppies herald the dawn of a new form of impersonalization: isolation through personalization. Technology is poised to use what it knows about you and your preferences to make a friendlier, easier experience. In the process, you get to interact with others&#8212;real or not. The interaction is deep enough to convince you that you&#8217;ve done something meaningful. You&#8217;ve made a friend or learned a new fact. (Wikipedia is a blessing and curse.) But have you really; can you rely on your friend or apply your fact?
</p>
<p>
Your iPod list has exactly the music you want to hear. And so now, people go through life not listening to each other but to themselves, plugged into a clean, white box whose world revolves around the most important person&#8212;its only person: its master is me. Time Magazine got it wrong. The person of the year is not You; it&#8217;s me. This is the society recorded in graffiti today.
</p>
<p><font size="1" color="#999">Technorati Tags:<a href="http://www.technorati.com/tag/isolation" rel="tag">isolation</a>, <a href="http://www.technorati.com/tag/technology" rel="tag">technology</a>, <a href="http://www.technorati.com/tag/personalization" rel="tag">personalization</a>, <a href="http://www.technorati.com/tag/individual" rel="tag">individual</a>, <a href="http://www.technorati.com/tag/myspace" rel="tag">myspace</a>, <a href="http://www.technorati.com/tag/friendster" rel="tag">friendster</a>, <a href="http://www.technorati.com/tag/blogs" rel="tag">blogs</a>, <a href="http://www.technorati.com/tag/online" rel="tag">online</a>, <a href="http://www.technorati.com/tag/community" rel="tag">community</a>, <a href="http://www.technorati.com/tag/sociology" rel="tag">sociology</a>, <a href="http://www.technorati.com/tag/graffiti" rel="tag">graffiti</a>, <a href="http://www.technorati.com/tag/tagging" rel="tag">tagging</a>, <a href="http://www.technorati.com/tag/kilroy" rel="tag">kilroy</a>, <a href="http://www.technorati.com/tag/web" rel="tag">web</a>, <a href="http://www.technorati.com/tag/internet" rel="tag">internet</a>, <a href="http://www.technorati.com/tag/ipod" rel="tag">ipod</a>, <a href="http://www.technorati.com/tag/wikipedia" rel="tag">wikipedia</a>, <a href="http://www.technorati.com/tag/aim" rel="tag">aim</a>, <a href="http://www.technorati.com/tag/chat" rel="tag">chat</a>, <a href="http://www.technorati.com/tag/collaboration" rel="tag">collaboration</a>, <a href="http://www.technorati.com/tag/boston" rel="tag">boston</a>, <a href="http://www.technorati.com/tag/mbta" rel="tag">mbta</a>, <a href="http://www.technorati.com/tag/yuppies" rel="tag">yuppies</a></font></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/jreyes/2006/12/31/the-state-of-grafitti-yuppie-as-mascot/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
	</channel>
</rss>
