<?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>A Concurrent Affair</title>
	<atom:link href="http://www.concurrentaffair.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.concurrentaffair.org</link>
	<description>a blog about Mathias&#039; work and play.</description>
	<lastBuildDate>Sat, 28 Apr 2012 09:14:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>An Addiction, or Two?</title>
		<link>http://www.concurrentaffair.org/2012/04/28/an-addiction-or-two/</link>
		<comments>http://www.concurrentaffair.org/2012/04/28/an-addiction-or-two/#comments</comments>
		<pubDate>Sat, 28 Apr 2012 09:14:42 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2862</guid>
		<description><![CDATA[I absolutely love my Kindle Touch. I&#8217;ve already read two books, which embarrassingly is as much as I read all last year. I was skeptical about how easy it is to read, but it&#8217;s just as good as reading on &#8230; <a href="http://www.concurrentaffair.org/2012/04/28/an-addiction-or-two/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I absolutely love my Kindle Touch. I&#8217;ve already read two books, which embarrassingly is as much as I read all last year. I was skeptical about how easy it is to read, but it&#8217;s just as good as reading on paper. Perhaps better. I also would have expected that I&#8217;d be more careful with an electronic device, but interestingly, it&#8217;s just the opposite: I put it in my pocket, because I&#8217;m not worried about bending or tearing pages.</p>

<p>I also bought <a href="http://www.grimrock.net/">Legend of Grimrock</a> a couple of weeks ago. Tonight, I finally installed it, and it looks and plays great. I think it could turn into another addiction. You can&#8217;t imagine how big this is: It&#8217;s the first video game I&#8217;ve bought in probably 15 years.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2012/04/28/an-addiction-or-two/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Three Years Left?</title>
		<link>http://www.concurrentaffair.org/2012/04/27/three-years-left/</link>
		<comments>http://www.concurrentaffair.org/2012/04/27/three-years-left/#comments</comments>
		<pubDate>Fri, 27 Apr 2012 06:08:10 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Ramblings]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2857</guid>
		<description><![CDATA[According to a Bloomberg article, I have about three years left before my employability as a software engineer will start to decline. There was some discussion about this on Slashdot. I particularly liked this comment, in response to why software &#8230; <a href="http://www.concurrentaffair.org/2012/04/27/three-years-left/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>According to a <a href="http://www.bloomberg.com/news/2012-04-22/software-engineers-will-work-one-day-for-english-majors.html">Bloomberg article</a>, I have about three years left before my employability as a software engineer will start to decline.</p>

<p>There was some discussion about this on <a href="http://developers.slashdot.org/story/12/04/23/1928202/software-engineering-is-a-dead-end-career-says-bloomberg?utm_source=rss1.0mainlinkanon&#038;utm_medium=feed">Slashdot</a>. I particularly liked this comment, in response to why software engineers have a relatively high starting salary:</p>

<blockquote>You&#8217;ve got it right when you say &#8220;compared to normal people&#8221;. Being a (good) software engineer takes a better-than-average brain. Better-than-average as in 98% of the world population won&#8217;t ever be a good software engineer, no matter how much time and effort they put in it, because they simply don&#8217;t have the brains for it. </blockquote>

<p><br/></p>

<p>I have a hard time believing that my comparative skills will decline so soon. At least right now, I don&#8217;t feel like I need to be worried about losing my job to a new grad or having it outsourced. And there is still so much more to learn and master.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2012/04/27/three-years-left/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My First 10 km Run</title>
		<link>http://www.concurrentaffair.org/2012/04/24/my-first-10-km-run/</link>
		<comments>http://www.concurrentaffair.org/2012/04/24/my-first-10-km-run/#comments</comments>
		<pubDate>Tue, 24 Apr 2012 14:52:49 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Pictures]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2851</guid>
		<description><![CDATA[Yesterday, for the first time in my life, I ran 10 km without stopping. It felt good. Last year, I had come close several times, but always decided to take it slow, maybe just run 8 km, and then something &#8230; <a href="http://www.concurrentaffair.org/2012/04/24/my-first-10-km-run/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Yesterday, for the first time in my life, I ran 10 km without stopping. It felt good. Last year, I had come close several times, but always decided to take it slow, maybe just run 8 km, and then something always happened that prevented me from running 10 km.</p>

<p>This time, after about 6 km, I still felt good. I decided to go for it.</p>

<p>I&#8217;m glad I did. I don&#8217;t even feel as sore as I would have expected. My average mile time was only 10:40, but I&#8217;m still elated about finishing the 10 km. When I was younger, I never would have thought this is something I could do.</p>

<div id="attachment_2852" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.concurrentaffair.org/wp-content/uploads/2012/04/IMAG2013_resize.jpg"><img src="http://www.concurrentaffair.org/wp-content/uploads/2012/04/IMAG2013_resize-300x225.jpg" alt="Relaxing and reading after my 10 km run." title="IMAG2013_resize" width="300" height="225" class="size-medium wp-image-2852" /></a><p class="wp-caption-text">Relaxing and reading after my 10 km run.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2012/04/24/my-first-10-km-run/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Fantastic Dinner</title>
		<link>http://www.concurrentaffair.org/2012/04/20/a-fantastic-dinner/</link>
		<comments>http://www.concurrentaffair.org/2012/04/20/a-fantastic-dinner/#comments</comments>
		<pubDate>Fri, 20 Apr 2012 15:57:53 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2847</guid>
		<description><![CDATA[On Wednesday night, I went to Chez Shea in Seattle for dinner. It was fantastic. The food was delicious, and our waitress was great: knowledgeable, polite, attentive, but not pushy. As appetizers, we had new potatoes and braised fennel salad &#8230; <a href="http://www.concurrentaffair.org/2012/04/20/a-fantastic-dinner/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>On Wednesday night, I went to <a href="http://www.chezshea.com">Chez Shea</a> in Seattle for dinner. It was fantastic. The food was delicious, and our waitress was great: knowledgeable, polite, attentive, but not pushy.</p>

<p>As appetizers, we had new potatoes and braised fennel salad with tarragon creme fraiche, pickled mustard seed vinaigrette and frisee; as well as Gruyere, spring onion and mushroom tart with baby arugula and jicama salad. The new potatoes were simple, clean, and appealing, and the Gruyere tart was decadent and rich.</p>

<p>Because our next dishes were running a bit behind, we got to try English pea soup, which had a hint of mint in it.</p>

<p>As main course, we chose pan-seared sockeye salmon on green lentils, shiitake mushrooms with bacon, rapini and caper brown butter; and potato gnocchi
with parsley and arugula pesto, roasted tomatoes, parmigiano reggiano, and toasted pine nuts.</p>

<p>Desert chocolate mousse and vanilla creme brulee. As drinks, we had a glass of La Chablisienne, a 2010 French Sauvignon Blanc; a glass of Chateau d&#8217;Oupia, a 2010 French Carignan/Syrah/Grenache blend; as well as something called &#8220;French Connection&#8221;, which was an mandarine-orange flavored drink with green chartreuse in it (can&#8217;t find the recipe for that version).</p>

<p>It was a fabulous meal and a great evening. Chez Shea could easily be my favorite Seattle restaurant. Unfortunately, it is closing at the end of this month. So it goes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2012/04/20/a-fantastic-dinner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Showers, Chance of Rain, Rain</title>
		<link>http://www.concurrentaffair.org/2012/03/16/showers-chance-of-rain-rain/</link>
		<comments>http://www.concurrentaffair.org/2012/03/16/showers-chance-of-rain-rain/#comments</comments>
		<pubDate>Fri, 16 Mar 2012 15:58:50 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2841</guid>
		<description><![CDATA[Weather forecast for Seattle: Showers likely. Cloudy with chance of rain in the evening. Then rain likely after midnight. I&#8217;m not even kidding. Those are the first three sentences of the current weather forecast on my phone.]]></description>
			<content:encoded><![CDATA[<p>Weather forecast for Seattle:</p>

<blockquote>Showers likely. Cloudy with chance of rain in the evening. Then rain likely after midnight.</blockquote>

<p><br/></p>

<p>I&#8217;m not even kidding. Those are the first three sentences of the current weather forecast on my phone.</p>

<p><a href="http://www.concurrentaffair.org/wp-content/uploads/2012/03/Capture.png"><img src="http://www.concurrentaffair.org/wp-content/uploads/2012/03/Capture.png" alt="Weather Forecast Seattle, 2012-03-16" title="Weather Forecast Seattle, 2012-03-16" width="621" height="173" class="size-full wp-image-2842" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2012/03/16/showers-chance-of-rain-rain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Communication</title>
		<link>http://www.concurrentaffair.org/2012/03/12/communication/</link>
		<comments>http://www.concurrentaffair.org/2012/03/12/communication/#comments</comments>
		<pubDate>Mon, 12 Mar 2012 15:27:42 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2836</guid>
		<description><![CDATA[Something anyone writing a paper or doing a presentation needs to keep in mind: Communication. Here&#8217;s the mouseOver text for the image: &#8220;Anyone who says that they&#8217;re great at communicating but &#8216;people are bad at listening&#8217; is confused about how &#8230; <a href="http://www.concurrentaffair.org/2012/03/12/communication/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Something anyone writing a paper or doing a presentation needs to keep in mind: Communication.</p>

<p>Here&#8217;s the mouseOver text for the image: &#8220;Anyone who says that they&#8217;re great at communicating but &#8216;people are bad at listening&#8217; is confused about how communication works.&#8221;</p>

<p><a href="http://xkcd.com/1028/"><img src="http://www.concurrentaffair.org/wp-content/uploads/2012/03/communication.png" alt="xkcd: Communication" title="xkcd: Communication" width="740" height="427" class="size-full wp-image-2837" /></a></p>

<p>Thanks, xkcd.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2012/03/12/communication/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Input/Output Redirection in DrJava?</title>
		<link>http://www.concurrentaffair.org/2012/03/08/inputoutput-redirection-in-drjava/</link>
		<comments>http://www.concurrentaffair.org/2012/03/08/inputoutput-redirection-in-drjava/#comments</comments>
		<pubDate>Thu, 08 Mar 2012 07:12:28 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[DrJava]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2830</guid>
		<description><![CDATA[On the AP Computer Science mailing list, there was a teacher who wanted to do input/output redirection and who asked why the following didn&#8217;t work: java LetterCounter &#60; input.txt The Interactions Pane in DrJava is not a DOS command line &#8230; <a href="http://www.concurrentaffair.org/2012/03/08/inputoutput-redirection-in-drjava/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>On the AP Computer Science mailing list, there was a teacher who wanted to do input/output redirection and who asked why the following didn&#8217;t work:</p>

<p><pre>java LetterCounter &lt; input.txt</pre></p>

<p>The Interactions Pane in DrJava is not a DOS command line or Unix-type shell, and it does not support I/O redirection.</p>

<p>The <tt>java MyClass arg0 arg1 arg2</tt> thing is only &#8220;syntactic sugar&#8221; for</p>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">MyClass.main(new String[] {&quot;arg0&quot;, &quot;arg1&quot;, &quot;arg2&quot;})</div></td></tr></tbody></table></div>

<p>While the Interactions Pane doesn&#8217;t support I/O redirection and piping with <tt>&lt;</tt>, <tt>&gt;</tt> and <tt>|</tt>, it is a fully functional Java interpreter.</p>

<p>You can, therefore, create a FileInputStream and use it as System.in before starting your program.</p>

<p>For example, if my program is the following:</p>

<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.*</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ReadFromStdIn <span style="color: #009900;">&#123;</span><br />
&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><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> args<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aioexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">IOException</span></a> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Abufferedreader+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">BufferedReader</span></a> br <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Abufferedreader+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">BufferedReader</span></a><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ainputstreamreader+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">InputStreamReader</span></a><span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">System</span></a>.<span style="color: #006633;">in</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> line<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>line <span style="color: #339933;">=</span> br.<span style="color: #006633;">readLine</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">System</span></a>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>line<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>

<p>Then I can start it the following way in DrJava to make it read from the test.txt file on my desktop:</p>

<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Welcome to DrJava. &nbsp;<span style="color: #006633;">Working</span> directory is C<span style="color: #339933;">:</span>\Users\mgricken\Documents\Dev\Java<br />
<span style="color: #339933;">&gt;</span> <span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.FileInputStream</span><br />
<span style="color: #339933;">&gt;</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">System</span></a>.<span style="color: #006633;">setIn</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afileinputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">FileInputStream</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;C:/Users/mgricken/Desktop/test.txt&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #339933;">&gt;</span> java ReadFromStdIn<br />
Foo<br />
Bar<br />
Fuzz<br />
Bam<br />
<span style="color: #339933;">&gt;</span></div></td></tr></tbody></table></div>

<p>The four lines with <tt>"Foo Bar Fuzz Bam"</tt> are coming from the test.txt file.</p>

<p>I realize that this is different from how Java programs are started in DOS or Unix shells, but it&#8217;s only because the main method is a very special method. DrJava&#8217;s Interaction Pane becomes elegant because you can run any method.</p>

<p>I could write the program this way, for example:</p>

<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.*</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ReadFromStream <span style="color: #009900;">&#123;</span><br />
&nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> readFromStream<span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ainputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">InputStream</span></a> is<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aioexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">IOException</span></a> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Abufferedreader+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">BufferedReader</span></a> br <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Abufferedreader+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">BufferedReader</span></a><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ainputstreamreader+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">InputStreamReader</span></a><span style="color: #009900;">&#40;</span>is<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> line<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>line <span style="color: #339933;">=</span> br.<span style="color: #006633;">readLine</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">System</span></a>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>line<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>

<p>Then I could run the program in the following ways:</p>

<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Welcome to DrJava. &nbsp;<span style="color: #006633;">Working</span> directory is C<span style="color: #339933;">:</span>\Users\mgricken\Documents\Dev\Java<br />
<span style="color: #339933;">&gt;</span> <span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.FileInputStream</span><br />
<span style="color: #339933;">&gt;</span><br />
<span style="color: #339933;">&gt;</span> <span style="color: #666666; font-style: italic;">// read from standard in</span><br />
<span style="color: #339933;">&gt;</span> <span style="color: #000000; font-weight: bold;">new</span> ReadFromStream<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">readFromStream</span><span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">System</span></a>.<span style="color: #006633;">in</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #339933;">&gt;</span><br />
<span style="color: #339933;">&gt;</span> <span style="color: #666666; font-style: italic;">// read from test.txt</span><br />
<span style="color: #339933;">&gt;</span> <span style="color: #000000; font-weight: bold;">new</span> ReadFromStream<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">readFromStream</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afileinputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">FileInputStream</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;C:/Users/mgricken/Desktop/test.txt&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span></div></td></tr></tbody></table></div>

<p>I generally advise to do as little processing in the main method and rely as little as possible on magic like &#8220;where is my standard in coming from?&#8221;, and to write as much general purpose code as possible like the <code class="codecolorer java mac-classic"><span class="java">readFromStream<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span></span></code> method. It will make code more reusable and work better in DrJava&#8217;s Interaction Pane.</p>

<p>I hope this helps. Thanks for using DrJava!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2012/03/08/inputoutput-redirection-in-drjava/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BSD License for the Reflection-Based S-Expression Parser</title>
		<link>http://www.concurrentaffair.org/2012/03/04/bsd-license-for-the-reflection-based-s-expression-parser/</link>
		<comments>http://www.concurrentaffair.org/2012/03/04/bsd-license-for-the-reflection-based-s-expression-parser/#comments</comments>
		<pubDate>Mon, 05 Mar 2012 03:53:21 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Mint]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2827</guid>
		<description><![CDATA[About a year and a half ago, I wrote a class in Java that uses reflection to create a parser for S-expressions, based on a class hierarchy. Today, a reader had found the class and wanted to use it in &#8230; <a href="http://www.concurrentaffair.org/2012/03/04/bsd-license-for-the-reflection-based-s-expression-parser/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>About a year and a half ago, I wrote a class in Java that uses <a href="http://www.concurrentaffair.org/2010/09/01/reflection-based-s-expression-parser/">reflection to create a parser for S-expressions</a>, based on a class hierarchy.</p>

<p>Today, a reader had found the class and wanted to use it in a commercial product. He was kind enough to inquire about the license. I wanted people to use it, otherwise I wouldn&#8217;t have made it available, but I also wanted to avoid giving expressed or implied warranties.</p>

<p>I decided to make it available under the <a href="http://www.concurrentaffair.org/bsd-license/">BSD license</a>. In fact, anything on this site or my <a href="http://www.cs.rice.edu/~mgricken/">graduate school site</a> that&#8217;s not governed by another license is now available under the BSD license.</p>

<p>Finally, the reader thanked me for &#8220;writing such a nice piece of well-designed software.&#8221; As you can tell, flattery gets you everywhere.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2012/03/04/bsd-license-for-the-reflection-based-s-expression-parser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Photography Class</title>
		<link>http://www.concurrentaffair.org/2012/02/11/photography-class/</link>
		<comments>http://www.concurrentaffair.org/2012/02/11/photography-class/#comments</comments>
		<pubDate>Sun, 12 Feb 2012 01:49:01 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Pictures]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2801</guid>
		<description><![CDATA[I went to a &#8220;Capturing True Emotion&#8221; photography workshop today. I&#8217;ve had my Canon G12 for over a year now, and I&#8217;ve passed my trusted Canon A610 on to my mom, but I still haven&#8217;t used the G12 very much. &#8230; <a href="http://www.concurrentaffair.org/2012/02/11/photography-class/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I went to a <a href="http://www.capturingtrueemotion.com/workshops/photography-workshops/cte-ultimate-camera-experience">&#8220;Capturing True Emotion&#8221;</a> photography workshop today. I&#8217;ve had my Canon G12 for over a year now, and I&#8217;ve passed my trusted Canon A610 on to my mom, but I still haven&#8217;t used the G12 very much. In fact, I probably still take better pictures with the A610 than with the G12, just because I don&#8217;t know it.</p>

<p>I figured I needed to spend some time with it, and what better way than to pay for it? I&#8217;m frugal, so there&#8217;s no skipping out of a paid workshop.</p>

<p>The first four hours of the workshop weren&#8217;t so great. It was at the Museum of Flight, in movie theater-style seating, for about 200 people. The information density was incredibly low in the first hour and the half, and anyone easily could have skipped that without missing any relevant information. It was mostly the instructor talking about how cool traveling and shooting weddings was. After that, we started talking about ISO, aperture, shutter speed, and so on. That was more interesting and useful.</p>

<p>The last two hours, after lunch, were by far the most useful. We went outside, where it was freezing, and practiced different ways to shoot. The trick that I got down pretty well was blurring the background using aperture. I think I took some neat pictures.</p>


<a href='http://www.concurrentaffair.org/2012/02/11/photography-class/2012-02-11-15-20-01-img_0763_resize/' title='2012-02-11 15-20-01 - IMG_0763_resize'><img width="150" height="150" src="http://www.concurrentaffair.org/wp-content/uploads/2012/02/2012-02-11-15-20-01-IMG_0763_resize-150x150.jpg" class="attachment-thumbnail" alt="Canon G12 manual mode, zoom, large aperture to blur the foreground and background.." title="2012-02-11 15-20-01 - IMG_0763_resize" /></a>
<a href='http://www.concurrentaffair.org/2012/02/11/photography-class/2012-02-11-15-21-54-img_0770_resize/' title='2012-02-11 15-21-54 - IMG_0770_resize'><img width="150" height="150" src="http://www.concurrentaffair.org/wp-content/uploads/2012/02/2012-02-11-15-21-54-IMG_0770_resize-150x150.jpg" class="attachment-thumbnail" alt="Canon G12 manual mode, zoom, large aperture to blur the background." title="2012-02-11 15-21-54 - IMG_0770_resize" /></a>
<a href='http://www.concurrentaffair.org/2012/02/11/photography-class/2012-02-11-13-50-42-img_0679_resize/' title='2012-02-11 13-50-42 - IMG_0679_resize'><img width="150" height="150" src="http://www.concurrentaffair.org/wp-content/uploads/2012/02/2012-02-11-13-50-42-IMG_0679_resize-150x150.jpg" class="attachment-thumbnail" alt="Canon G12 manual mode, zoom, large aperture to blur the background." title="2012-02-11 13-50-42 - IMG_0679_resize" /></a>


<p>I have noticed, though, that my point-and-shoot definitely has some limitations, and I almost want a DSLR now. I can&#8217;t go to a very small aperture, for example, and when I zoom, I can&#8217;t have a very large aperture anymore. A lens for my camera might help, but I&#8217;m not sure if that makes sense. I&#8217;ll see how much I use the G12 this year and then decide what to purchase.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2012/02/11/photography-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Time Wasted</title>
		<link>http://www.concurrentaffair.org/2012/02/07/time-wasted/</link>
		<comments>http://www.concurrentaffair.org/2012/02/07/time-wasted/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 07:11:10 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Pictures]]></category>
		<category><![CDATA[Ramblings]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2795</guid>
		<description><![CDATA[Today was a true Monday &#8212; not a pleasant day. Except for maybe an hour at work and two hours at the gym, it was nothing but wasted time. I took my car to the shop today to have the &#8230; <a href="http://www.concurrentaffair.org/2012/02/07/time-wasted/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Today was a true Monday &#8212; not a pleasant day. Except for maybe an hour at work and two hours at the gym, it was nothing but wasted time. I took my car to the shop today to have the damage from the January 4 accident repaired, then drove a rental car directly to work. It&#8217;s a Toyota Corolla. I like the Corolla a lot, but compared to my Camry, it&#8217;s decidedly less sophisticated. At least traffic wasn&#8217;t bad. On Wednesday or Thursday, I&#8217;m supposed to get my car back. Even though the other driver&#8217;s insurance is paying, this incident is probably going to cost me about $200 and 15 hours of my spare time.</p>

<p>When I arrived at work, I found that construction workers had built an office around two cubes nearby, and all our computers had been unplugged. Without warning. My desktop wasn&#8217;t starting up anymore. I got it to boot with the integrated graphics again, but the dual-head on the dedicated card wasn&#8217;t working anymore.</p>

<p>I tried to re-position the video card, but after about four hours, I gave up and started working with just one monitor. IT support later took a look at it. The desktop must have really been knocked around. There was a big, biiig dent in the case, and the video card had to be bent back into the slot with more force than I was willing to exert. But fortunately, all is working again.</p>

<div id="attachment_2797" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.concurrentaffair.org/wp-content/uploads/2012/02/IMAG1807_resize.jpg"><img src="http://www.concurrentaffair.org/wp-content/uploads/2012/02/IMAG1807_resize-300x225.jpg" alt="Dent in my work desktop." title="IMAG1807_resize" width="300" height="225" class="size-medium wp-image-2797" /></a><p class="wp-caption-text">Dent in my work desktop.</p></div>

<p>All in all, I probably got one hour of work in today. I&#8217;m disappointed. What turned my Monday around, though, was my visit at the gym. I swam more than I&#8217;ve probably ever swum before. It felt good.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2012/02/07/time-wasted/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fun in the Snow, Work from Home</title>
		<link>http://www.concurrentaffair.org/2012/01/20/fun-in-the-snow-work-from-home/</link>
		<comments>http://www.concurrentaffair.org/2012/01/20/fun-in-the-snow-work-from-home/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 23:01:20 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Pictures]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2785</guid>
		<description><![CDATA[Today is the third snow day in a row. I&#8217;m glad that my job offers me the flexibility to work from home, because the last two days, it was dangerous out there, and now it is just nasty. I can&#8217;t &#8230; <a href="http://www.concurrentaffair.org/2012/01/20/fun-in-the-snow-work-from-home/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Today is the third snow day in a row. I&#8217;m glad that my job offers me the flexibility to work from home, because the last two days, it was dangerous out there, and now it is just nasty. I can&#8217;t wait to go back to the office, though. Even though my productivity has been descent (better than I expected &#8212; maybe it&#8217;s the lack of meetings), working from home does get a bit lonely.</p>

<div id="attachment_2787" class="wp-caption aligncenter" style="width: 650px"><a href="http://www.concurrentaffair.org/wp-content/uploads/2012/01/499299082.jpg"><img src="http://www.concurrentaffair.org/wp-content/uploads/2012/01/499299082-1024x577.jpg" alt="Sliding in the snow, January 18, 2012" title="Sliding in the snow, January 18, 2012" width="640" height="360" class="size-large wp-image-2787" /></a><p class="wp-caption-text">Sliding in the snow, January 18, 2012</p></div>

<p>It&#8217;s been a long time since I&#8217;ve seen this much snow. Definitely an experience.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2012/01/20/fun-in-the-snow-work-from-home/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Seattle, a Winter Wonderland</title>
		<link>http://www.concurrentaffair.org/2012/01/15/seattle-a-winter-wonderland/</link>
		<comments>http://www.concurrentaffair.org/2012/01/15/seattle-a-winter-wonderland/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 02:40:09 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Pictures]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2756</guid>
		<description><![CDATA[Before I moved to Seattle, people told me it &#8220;never snows in Seattle.&#8221; In the first few months of 2011, I had already found that to be incorrect. But today, more snow fell than I&#8217;ve seen here before. It&#8217;s really &#8230; <a href="http://www.concurrentaffair.org/2012/01/15/seattle-a-winter-wonderland/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Before I moved to Seattle, people told me it &#8220;never snows in Seattle.&#8221; In the first few months of 2011, I had already found that to be incorrect. But today, more snow fell than I&#8217;ve seen here before. It&#8217;s really quite pretty, but it&#8217;s also Sunday, and I don&#8217;t have to go anywhere.</p>


<a href='http://www.concurrentaffair.org/2012/01/15/seattle-a-winter-wonderland/img_0585_resize/' title='Seattle snow, 2012-01-15, from my apartment. Where&#039;s the city?'><img src="http://www.concurrentaffair.org/wp-content/uploads/2012/01/IMG_0585_resize.jpg" class="attachment-thumbnail" alt="Seattle snow, 2012-01-15, from my apartment. Where&#039;s the city?" title="Seattle snow, 2012-01-15, from my apartment. Where&#039;s the city?" /></a>
<a href='http://www.concurrentaffair.org/2012/01/15/seattle-a-winter-wonderland/img_0592_resize/' title='Seattle snow, 2012-01-15, from my apartment. Facing northeast.'><img src="http://www.concurrentaffair.org/wp-content/uploads/2012/01/IMG_0592_resize.jpg" class="attachment-thumbnail" alt="Seattle snow, 2012-01-15, from my apartment. Facing northeast." title="Seattle snow, 2012-01-15, from my apartment. Facing northeast." /></a>
<a href='http://www.concurrentaffair.org/2012/01/15/seattle-a-winter-wonderland/imag1744_resize/' title='Seattle snow, 2012-01-15, outside my apartment.'><img src="http://www.concurrentaffair.org/wp-content/uploads/2012/01/IMAG1744_resize.jpg" class="attachment-thumbnail" alt="Seattle snow, 2012-01-15, outside my apartment." title="Seattle snow, 2012-01-15, outside my apartment." /></a>
<a href='http://www.concurrentaffair.org/2012/01/15/seattle-a-winter-wonderland/imag1748_resize/' title='Seattle snow, 2012-01-15, kids sledding.'><img src="http://www.concurrentaffair.org/wp-content/uploads/2012/01/IMAG1748_resize.jpg" class="attachment-thumbnail" alt="Seattle snow, 2012-01-15, kids sledding." title="Seattle snow, 2012-01-15, kids sledding." /></a>
<a href='http://www.concurrentaffair.org/2012/01/15/seattle-a-winter-wonderland/imag1747_resize/' title='Seattle snow, 2012-01-15, everything is white.'><img src="http://www.concurrentaffair.org/wp-content/uploads/2012/01/IMAG1747_resize.jpg" class="attachment-thumbnail" alt="Seattle snow, 2012-01-15, everything is white." title="Seattle snow, 2012-01-15, everything is white." /></a>
<a href='http://www.concurrentaffair.org/2012/01/15/seattle-a-winter-wonderland/imag1750_resize/' title='Seattle snow, 2012-01-15, snowman on a bench.'><img src="http://www.concurrentaffair.org/wp-content/uploads/2012/01/IMAG1750_resize.jpg" class="attachment-thumbnail" alt="Seattle snow, 2012-01-15, snowman on a bench." title="Seattle snow, 2012-01-15, snowman on a bench." /></a>


<p>We&#8217;ll see how I feel about the snow tomorrow. Fortunately, my manager is great and has already said we could all work from home if necessary. I do have a meeting, though, that I don&#8217;t want to miss.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2012/01/15/seattle-a-winter-wonderland/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>People Who Crash into Cars I&#8217;m in Continue to Suck</title>
		<link>http://www.concurrentaffair.org/2012/01/13/people-who-crash-into-cars-im-in-continue-to-suck/</link>
		<comments>http://www.concurrentaffair.org/2012/01/13/people-who-crash-into-cars-im-in-continue-to-suck/#comments</comments>
		<pubDate>Sat, 14 Jan 2012 01:19:45 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2754</guid>
		<description><![CDATA[The accident last week was the second time that I was involved in a car accident (it happened more often if you count cars hitting me on a bike). The first time, a Houston rapper rear-ended my friend&#8217;s car, with &#8230; <a href="http://www.concurrentaffair.org/2012/01/13/people-who-crash-into-cars-im-in-continue-to-suck/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The accident last week was the second time that I was involved in a car accident (it happened more often if you count cars hitting me on a bike).</p>

<p>The first time, a Houston rapper rear-ended my friend&#8217;s car, with my friend and me in it, and totaled it. He had an insurance card that he handed over, but what we didn&#8217;t know was that he had canceled the policy. He had had enough money to buy his new car in cash, but then he was too stingy to have the legally-required insurance.</p>

<p>You suck, man.</p>

<p>The accident last week wasn&#8217;t nearly as bad. Some people might not even care. There is some bent metal on the fender and a bunch of long scratches. The woman gave me her insurance card and her phone number. I talked to her insurance last week, but they didn&#8217;t get anywhere, because the phone number they had wasn&#8217;t working. I tried calling her, and it was the same number. She had given me a phone number that didn&#8217;t work.</p>

<p>That sucks too.</p>

<p>I tracked her down on Google and called her at work. I&#8217;m glad she honored my request to call her insurance as soon as possible. She acknowledged she was at fault, and now I can go get an estimate. She stunned me a little, though, when she grumpily said &#8220;I&#8217;m disappointed you got the insurance involved. I wish you had just gotten an estimate, and I would have paid for the repairs.&#8221; Tough luck, missy.</p>

<p>A co-worker of mine had the perfect response. He asked, &#8220;Did you say &#8216;I&#8217;m disappointed you hit my car&#8217;?&#8221; I wish I had.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2012/01/13/people-who-crash-into-cars-im-in-continue-to-suck/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Grammar Change Saves the Day</title>
		<link>http://www.concurrentaffair.org/2012/01/06/a-grammar-change-saves-the-day/</link>
		<comments>http://www.concurrentaffair.org/2012/01/06/a-grammar-change-saves-the-day/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 16:47:14 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2751</guid>
		<description><![CDATA[At work, we deployed the latest version of our code on Wednesday night. It included a new query language. We used ANTLR to do the parsing. We had never tested the new queries in a production setting, but the deployments &#8230; <a href="http://www.concurrentaffair.org/2012/01/06/a-grammar-change-saves-the-day/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>At work, we deployed the latest version of our code on Wednesday night. It included a new query language. We used <a href="http://www.antlr.org/">ANTLR</a> to do the parsing.</p>

<p>We had never tested the new queries in a production setting, but the deployments to our Alpha, Gamma, and two regional clusters worked without problems. A few hours after deploying to the last clusters, a customer started using it, and that&#8217;s when all hell broke lose. I ended up rolling back to the previous version at 4 AM on Thursday.</p>

<p>A quick analysis by my coworkers yesterday showed that most of the time was spent doing the parsing.</p>

<p>The grammar that we used was essentially this one, which required backtracking by ANTLR:</p>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">E ::= ( E )<br />
&nbsp; &nbsp; | C<br />
C ::= ( E and E )<br />
&nbsp; &nbsp; | ( E or E )</div></td></tr></tbody></table></div>

<p>We never even let our test query finish, but it had been running for 45 minutes non-stop. I suggested a small change, which amounted to something like this:</p>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">E ::= ( E R<br />
R ::= )<br />
&nbsp; &nbsp; | and E )<br />
&nbsp; &nbsp; | or E )</div></td></tr></tbody></table></div>

<p>Sometimes it <em>is</em> helpful that I spent grad school in the <a href="http://compsci.rice.edu/research.cfm?doc_id=4356">programming languages group</a>.</p>

<p>The parser that ANTLR generated now parsed our test query in under a second. Sure, we changed an <em>LL(*)</em> parser into an <em>LL(1)</em> parser, but I never would have thought that changing the grammar could result in an improvement by a factor of 2700.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2012/01/06/a-grammar-change-saves-the-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happy New Year (?)</title>
		<link>http://www.concurrentaffair.org/2012/01/06/happy-new-year-3/</link>
		<comments>http://www.concurrentaffair.org/2012/01/06/happy-new-year-3/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 16:33:05 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Ramblings]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2749</guid>
		<description><![CDATA[Happy new year! I haven&#8217;t written in a while, but I&#8217;ve also been busy. You know the story. I&#8217;ve done some traveling in private matters, but mostly it was large scale designs and some important improvements for work. I took &#8230; <a href="http://www.concurrentaffair.org/2012/01/06/happy-new-year-3/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Happy new year!</p>

<p>I haven&#8217;t written in a while, but I&#8217;ve also been busy. You know the story. I&#8217;ve done some traveling in private matters, but mostly it was large scale designs and some important improvements for work. I took every Monday off in December, and I still think that was a genial idea. Now it&#8217;s back to work without time off. It&#8217;s a marathon of <a href="http://scrummethodology.com/scrum-sprint/">sprints</a>.</p>

<p>This year has not started so well for me, though. The girl I had been dating says she &#8220;needs some time.&#8221; I don&#8217;t know what that means. I don&#8217;t know if I am single or still in a relationship. Not that that really matters, I don&#8217;t have the nerve to meet anyone new right now anyway. I&#8217;ll just bury myself in work as a distraction.</p>

<p>On January 4, a woman drove her car into mine when she tried to squeeze into the left turn lane as I was stopped at a red light. So unnecessary. The damage isn&#8217;t bad, but it&#8217;s annoying. My car wasn&#8217;t even a year old. And now I have to deal with insurance and repairs. The hours wasted are what annoy me the most.</p>

<p>And yesterday I missed my bus because I ripped my shoelace when I put on my left boot. Argh.</p>

<p>Makes me kind of worry about Friday, January 13.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2012/01/06/happy-new-year-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Where Citations Come From &#8212; xkcd: Citogenesis</title>
		<link>http://www.concurrentaffair.org/2011/11/16/where-citations-come-from-xkcd-citogenesis/</link>
		<comments>http://www.concurrentaffair.org/2011/11/16/where-citations-come-from-xkcd-citogenesis/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 16:34:36 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2740</guid>
		<description><![CDATA[via xkcd: Citogenesis. Something similar actually happened with the Karl-Theodor zu Guttenberg, who used to be the German Minister for Economics and Technology and later the Minister of Defense, before it became clear that he had plagiarized his doctoral dissertation.]]></description>
			<content:encoded><![CDATA[<p><a href="http://xkcd.com/978/"><img src='http://www.concurrentaffair.org/wp-content/uploads/2011/11/citogenesis.png' alt='' /></a></p>

<p>via <a href='http://xkcd.com/978/'>xkcd: Citogenesis</a>.</p>

<p>Something similar actually happened with the <a href="http://www.bildblog.de/5704/wie-ich-freiherr-von-guttenberg-zu-wilhelm-machte/">Karl-Theodor zu Guttenberg</a>, who used to be the German Minister for Economics and Technology and later the Minister of Defense, before it became clear that he had plagiarized his doctoral dissertation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2011/11/16/where-citations-come-from-xkcd-citogenesis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DrJava DefinitionsPaneMemoryLeakTest fails on Mac</title>
		<link>http://www.concurrentaffair.org/2011/11/14/drjava-definitionspanememoryleaktest-fails-on-mac/</link>
		<comments>http://www.concurrentaffair.org/2011/11/14/drjava-definitionspanememoryleaktest-fails-on-mac/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 06:28:38 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[DrJava]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2735</guid>
		<description><![CDATA[I submitted a bugfix for a problem with the debug panel when no debugger is available. I noticed that on the Mac, the DefinitionsPaneMemoryLeakTest now fails: 1234567891011121314151617181920212223242526&#160; &#160;[junit] DefinitionsPaneMemoryLeakTest &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;26.92 sec &#160; &#160;[junit] &#8230; <a href="http://www.concurrentaffair.org/2011/11/14/drjava-definitionspanememoryleaktest-fails-on-mac/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I submitted a <a href="https://sourceforge.net/tracker/?func=detail&#038;aid=3436749&#038;group_id=44253&#038;atid=438935">bugfix for a problem with the debug panel when no
debugger is available</a>.</p>

<p>I noticed that on the Mac, the DefinitionsPaneMemoryLeakTest now
fails:</p>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp;[junit] DefinitionsPaneMemoryLeakTest &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;26.92 sec<br />
&nbsp; &nbsp;[junit] Testsuite: edu.rice.cs.drjava.ui.DefinitionsPaneMemoryLeakTest<br />
&nbsp; &nbsp;[junit] Tests run: 1, Failures: 1, Errors: 0<br />
&nbsp; &nbsp;[junit] ------------- Standard Error -----------------<br />
&nbsp; &nbsp;[junit] Skipped analysing class java.security.ProtectionDomain<br />
because of java.lang.AssertionError<br />
&nbsp; &nbsp;[junit] ------------- ---------------- ---------------<br />
&nbsp; &nbsp;[junit] Testcase:<br />
testDocumentPaneMemoryLeak(edu.rice.cs.drjava.ui.DefinitionsPaneMemoryLeakTest): &nbsp; &nbsp; &nbsp; &nbsp;FAILED<br />
&nbsp; &nbsp;[junit] Document 0 leaked:<br />
&nbsp; &nbsp;[junit] private static sun.awt.AppContext<br />
sun.awt.AppContext.mainAppContext-&gt;<br />
&nbsp; &nbsp;[junit] sun.awt.AppContext@4998a455-table-&gt;<br />
&nbsp; &nbsp;[junit] java.util.HashMap@7f1bfcfc-table-&gt;<br />
<br />
...<br />
<br />
&nbsp; &nbsp;[junit] [Ljava.beans.PropertyChangeListener;@67b50846-[373]-&gt;<br />
&nbsp; &nbsp;[junit] javax.swing.JViewport$1@7ceade87-this$0-&gt;<br />
&nbsp; &nbsp;[junit] javax.swing.JViewport@48be3a5e-component-&gt;<br />
&nbsp; &nbsp;[junit] java.util.ArrayList@6b333f77-elementData-&gt;<br />
&nbsp; &nbsp;[junit] [Ljava.lang.Object;@559b52d3-[0]-&gt;<br />
&nbsp; &nbsp;[junit] edu.rice.cs.drjava.ui.DefinitionsPane@2a38d0a8-_doc-&gt;<br />
&nbsp; &nbsp;[junit] edu.rice.cs.drjava.model.DefaultGlobalModel$ConcreteOpenDefDoc@557e5cbd<br />
&nbsp; &nbsp;[junit] &nbsp; &nbsp; at<br />
org.netbeans.test.MemoryTestUtils.assertGC(MemoryTestUtils.java:137)</div></td></tr></tbody></table></div>

<p>It passes on Windows, and I haven&#8217;t tried it on Linux. I rolled
back as far as revision 5266, which was from June 3, 2010, and it was
still failing on the Mac. I have a feeling that something must have
changed in Mac OS (Lion) or the Java version I have running
(1.6.0_29). I know I&#8217;ve successfully run the unit tests many times
since then on the Mac, even on my MacBook Pro. I even think I have run
them successfully on Mac OS Lion.</p>

<p>It would be great if I could still run the unit tests on an older Mac, with an older Mac OS. I&#8217;ll dig into this, but it may take some time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2011/11/14/drjava-definitionspanememoryleaktest-fails-on-mac/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Awful King County Metro Changes Coming Up</title>
		<link>http://www.concurrentaffair.org/2011/10/27/awful-king-county-metro-changes-coming-up/</link>
		<comments>http://www.concurrentaffair.org/2011/10/27/awful-king-county-metro-changes-coming-up/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 06:20:47 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Ramblings]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2711</guid>
		<description><![CDATA[I just found out that King County Metro is planning to cut off service for Route 27 at 12th Avenue at non-peak times. This is awful. Route 27 is the only bus that takes me directly to my office. It &#8230; <a href="http://www.concurrentaffair.org/2011/10/27/awful-king-county-metro-changes-coming-up/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I just found out that <a href="http://metro.kingcounty.gov/have-a-say/get-in-the-know/projects/route-information.html">King County Metro</a> is <a href="http://seattletransitblog.com/2011/10/25/metro-goes-big-for-fall-2012-service-change/">planning to cut off service for Route 27 at 12th Avenue</a> at non-peak times. This is awful.</p>

<p>Route 27 is the only bus that takes me directly to my office. It already takes me 40 to 45 minutes with that bus; in fact, I can walk faster, which I do when the weather is nice. Coming back from work on the 27, or any bus for that matter, is already bad enough <em>with the current service</em> running outside of peak times. I would have hoped that service improves instead of being cut. I guess buses are really more intended for the homeless, who don&#8217;t care where the route ends, and not for people who aren&#8217;t going home from work at 6 PM yet, when peak time ends.</p>

<p>If these changes go into effect, I guess I&#8217;ll just drive every day. That means I&#8217;ll have to pay for parking, but I&#8217;m not going to change buses and spend two hours every day commuting in the company of the drunk, drugged, and unwashed when I can drive to work in under 15 minutes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2011/10/27/awful-king-county-metro-changes-coming-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Back from SPLASH 2011</title>
		<link>http://www.concurrentaffair.org/2011/10/25/back-from-splash-2011/</link>
		<comments>http://www.concurrentaffair.org/2011/10/25/back-from-splash-2011/#comments</comments>
		<pubDate>Wed, 26 Oct 2011 04:29:54 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Pictures]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2716</guid>
		<description><![CDATA[I returned from SPLASH 2011 in Portland tonight. I attended only the Educators&#8217; Symposium on Monday and the first day of the conference proper, but it was worth it. And how could it not be, given that it was so &#8230; <a href="http://www.concurrentaffair.org/2011/10/25/back-from-splash-2011/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I returned from <a href="http://splashcon.org/2011/">SPLASH 2011</a> in Portland tonight. I attended only the Educators&#8217; Symposium on Monday and the first day of the conference proper, but it was worth it. And how could it not be, given that it was so close, in Portland, even though the still-new-for-me title &#8220;SPLASH &mdash; Systems, Programming, Languages and Applications: Software for Humanity&#8221; has something very hippy-like.</p>

<p>I got to see Corky, Vivek and Vincent again, my doctoral advisor and two of my collaborators. I ran into a bunch of people I had met before, like Matthew Flatt, Eelco Visser, Michael Ernst, and Eugene Wallingford, but Igor Peshansky was one of the few people who seemed to recognize me as well. Thanks, and that&#8217;s just the way it goes for folks like me.</p>

<p>Vivek and Vincent did a great job with our <a href="http://splashcon.org/2011/program/demonstrations/173-drhj-the-cure-to-your-multicore-programming-woes">DrHJ demonstration</a>. Of the other presentations that I watched, I think <a href="http://www.eecs.berkeley.edu/Pubs/TechRpts/2011/EECS-2011-3.html">PREFAIL</a> impressed me the most. That was really good work. I liked the idea of the <a href="http://splashcon.org/2011/program/185">DSL to test languages</a> and wish I&#8217;d had something like that for my work on <a href="http://www.cs.rice.edu/%7Emgricken/research/mint/index.shtml">Mint</a>. And <a href="http://www.mobl-lang.org/">Zef Hemel&#8217;s mobl language demo</a> was just damn cool.</p>

<p>I&#8217;m glad that I got to go, and I wish I had had more time, time to stay and be involved. I have more interests and responsibilities now, but I enjoy keeping in touch.</p>

<p>Here are some pictures:</p>

<div class="wp-caption alignnone" style="width: 550px"><a href="http://www.concurrentaffair.org/wp-content/uploads/2011/10/IMAG1431.jpg"><img src="http://www.concurrentaffair.org/wp-content/uploads/2011/10/IMAG1431.jpg" alt="Portland from the top of the Hilton, where the Educators&#039; Symposium was held." title="IMAG1431" class="aligncenter size-full wp-image-2721" /></a><p class="wp-caption-text">Portland from the top of the Hilton, where the Educators&#039; Symposium was held.</p></div>

<div class="wp-caption alignnone" style="width: 550px"><a href="http://www.concurrentaffair.org/wp-content/uploads/2011/10/IMAG1433.jpg"><img src="http://www.concurrentaffair.org/wp-content/uploads/2011/10/IMAG1433.jpg" alt="Turing Award-winner Ivan Sutherland speaking." title="IMAG1433" class="aligncenter size-full wp-image-2722" /></a><p class="wp-caption-text">Turing Award-winner Ivan Sutherland speaking.</p></div>

<div class="wp-caption alignnone" style="width: 550px"><a href="http://splashcon.org/2011/program/269"><img src="http://www.concurrentaffair.org/wp-content/uploads/2011/10/IMAG1436.jpg" alt="PREFAIL Talk." title="IMAG1436" class="aligncenter size-full wp-image-2719" /></a><p class="wp-caption-text">PREFAIL talk by Pallavi Joshi, UC Berkeley.</p></div>

<div class="wp-caption alignnone" style="width: 550px"><a href="http://splashcon.org/2011/program/269"><img src="http://www.concurrentaffair.org/wp-content/uploads/2011/10/IMAG1437.jpg" alt="PREFAIL Talk, finishing slide." title="IMAG1437" class="aligncenter size-full wp-image-2720" /></a><p class="wp-caption-text">PREFAIL Talk, finishing slide.</p></div>

<div class="wp-caption alignnone" style="width: 550px"><a href="http://splashcon.org/2011/program/269"><img src="http://www.concurrentaffair.org/wp-content/uploads/2011/10/IMAG1434.jpg" alt="Integrated Language Definition Testing Talk." title="IMAG1434" class="aligncenter size-full wp-image-2717" /></a><p class="wp-caption-text">Integrated Language Definition Testing Talk by Lennart Kats, Delft University of Technology</p></div>

<div class="wp-caption alignnone" style="width: 550px"><a href="http://splashcon.org/2011/program/269"><img src="http://www.concurrentaffair.org/wp-content/uploads/2011/10/IMAG1435.jpg" alt="Integrated Language Definition Testing, example slide." title="IMAG1435" class="aligncenter size-full wp-image-2718" /></a><p class="wp-caption-text">Integrated Language Definition Testing, example slide.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2011/10/25/back-from-splash-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>John McCarthy Died</title>
		<link>http://www.concurrentaffair.org/2011/10/24/john-mccarthy-died/</link>
		<comments>http://www.concurrentaffair.org/2011/10/24/john-mccarthy-died/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 04:18:20 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2706</guid>
		<description><![CDATA[John McCarthy, Turing Award winner and one of the luminaries of computer science, died yesterday. I&#8217;ve spent the evening after the SPLASH Educators&#8217; Symposium listening to McCarthy&#8217;s OOPSLA 2007 keynote speech (mp3). John McCarthy was one of the earliest collaborators &#8230; <a href="http://www.concurrentaffair.org/2011/10/24/john-mccarthy-died/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://techcrunch.com/2011/10/24/creator-of-lisp-john-mccarthy-dead-at-84/">John McCarthy</a>, Turing Award winner and one of the luminaries of computer science, died yesterday. I&#8217;ve spent the evening after the SPLASH Educators&#8217; Symposium listening to <a href="http://www.oopsla.org/podcasts/Keynote_JohnMcCarthy.mp3">McCarthy&#8217;s OOPSLA 2007 keynote speech (mp3)</a>.</p>

<div class="wp-caption alignnone" style="width: 550px"><a href="http://twitter.com/#!/splashcon/status/128583021367525376/photo/1/large"><img alt="Dick Gabriel introducing Stanford professor McCarthy&#039;s keynote at OOPSLA&#039;07 in Montreal" src="http://p.twimg.com/AcjRk6FCAAAYXLT.jpg" title="Dick Gabriel introducing Stanford professor McCarthy&#039;s keynote at OOPSLA&#039;07 in Montreal" width="540" height="720" /></a><p class="wp-caption-text">Dick Gabriel introducing Stanford professor McCarthy&#039;s keynote at OOPSLA&#039;07 in Montreal</p></div>

<p>John McCarthy was one of the earliest collaborators of my doctoral advisor, Robert &#8220;Corky&#8221; Cartwright. They worked on first-order programming logic in 1978 (<a href="http://www.springerlink.com/content/y816182407533217/"><em>Recursive programs as functions in a first order theory</em></a>) and 1979 (<a href="http://dl.acm.org/citation.cfm?doid=567752.567759"><em>First order programming logic</em></a>).</p>

<p>McCarthy was on Corky&#8217;s committee. In Germany, the doctoral advisor is called &#8220;Doktorvater&#8221;, doctor father. If I haven&#8217;t quite lost a doctoral grandfather, I have at least lost a doctoral granduncle.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2011/10/24/john-mccarthy-died/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.oopsla.org/podcasts/Keynote_JohnMcCarthy.mp3" length="35804293" type="audio/mpeg" />
		</item>
	</channel>
</rss>

