<?xml version="1.0" encoding="utf-8"?>
<!-- If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/ -->
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:lj="http://www.livejournal.com">
  <id>urn:lj:livejournal.com:atom1:nolacoaster</id>
  <title>BlogFace.org</title>
  <subtitle>Free Whitepapers!</subtitle>
  <author>
    <name>nolacoaster</name>
  </author>
  <link rel="alternate" type="text/html" href="http://nolacoaster.livejournal.com/"/>
  <link rel="self" type="text/xml" href="http://nolacoaster.livejournal.com/data/atom"/>
  <updated>2010-01-05T21:42:58Z</updated>
  <lj:journal userid="9575027" username="nolacoaster" type="personal"/>
  <link rel="service.feed" type="application/x.atom+xml" href="http://nolacoaster.livejournal.com/data/atom" title="BlogFace.org"/>
  <link rel="hub" href="http://pubsubhubbub.appspot.com/"/>
  <entry>
    <id>urn:lj:livejournal.com:atom1:nolacoaster:124407</id>
    <link rel="alternate" type="text/html" href="http://nolacoaster.livejournal.com/124407.html"/>
    <link rel="self" type="text/xml" href="http://nolacoaster.livejournal.com/data/atom/?itemid=124407"/>
    <title>Sick Cafe</title>
    <published>2010-01-05T21:40:07Z</published>
    <updated>2010-01-05T21:42:58Z</updated>
    <category term="pittsburgh"/>
    <category term="music"/>
    <category term="sick ridiculous and the sick riduculous"/>
    <category term="club cafe"/>
    <content type="html">&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt;&lt;a title="photo sharing" href="http://www.flickr.com/photos/sickridiculous/4238576342/"&gt;&lt;img alt="" style="border: solid 2px #000000;" src="http://farm3.static.flickr.com/2690/4238576342_fe96bec19e_m.jpg" /&gt;&lt;/a&gt; &lt;br /&gt; &lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;  &lt;a href="http://www.flickr.com/photos/sickridiculous/4238576342/"&gt;newyear2009-9&lt;/a&gt;  &lt;br /&gt;  Originally uploaded by &lt;a href="http://www.flickr.com/people/sickridiculous/"&gt;sick ridiculous&lt;/a&gt;. &lt;/span&gt;&lt;/div&gt;Hey folks. I am alive!&lt;br /&gt;&lt;br /&gt;After a much enjoyed, if not deserved, winter break in New Orleans and Pittsburgh, I am back to a somewhat normal life. This means I am coming in to school every day. Most people are here yet, though, so it's kind of boring.&lt;br /&gt;&lt;br /&gt;Anywho, just before the New Year (actually New Year's Eve-Eve) &lt;a href="http://sickridiculous.com/"&gt;Sick Ridiculous and the Sick Ridiculous&lt;/a&gt; played a show at &lt;a href="http://clubcafelive.com/"&gt;Club Cafe&lt;/a&gt;, right here in Pittsburgh. If you've never been, Club Cafe is a great venue that hosts a number of smallish national acts, usually of the folk/singer-songwriter variety. I have seen a bunch of good bands there, and the sound is great. We had a awesome time opening for our friends in &lt;a href="http://www.myspace.com/slingshotgenius"&gt;Slingshot Genius&lt;/a&gt;. We even busted out a soon-to-be-favorite, &amp;quot;Duckles Chuckles,&amp;quot; which we wrote when our friends Stephen &amp;amp; Laura moved to Washington D.C. &lt;br /&gt;&lt;br /&gt;Please enjoy some pictures by clicking though. Our friend Shafeeq also took some &lt;a href="http://yogi.pdl.cmu.edu/~shafeeq/images/jalbum-1024x768-new/music/slingshot_genius-12-30-09/good/index.html"&gt;pro-style pictures&lt;/a&gt;. Thanks bro!&lt;br /&gt;&lt;br /&gt;Also, peep this &lt;a href="http://mp3.tom7.org/sickridiculous/posters/slingshot%20vs%20sick%20new%20years%20eve%20eve%20300.png"&gt;incredible poster&lt;/a&gt; that Tom made for the show.&lt;br clear="all" /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:nolacoaster:123998</id>
    <link rel="alternate" type="text/html" href="http://nolacoaster.livejournal.com/123998.html"/>
    <link rel="self" type="text/xml" href="http://nolacoaster.livejournal.com/data/atom/?itemid=123998"/>
    <title>Fritz Cola - Powerful Stuff</title>
    <published>2009-11-20T12:59:18Z</published>
    <updated>2009-11-20T13:04:05Z</updated>
    <category term="books"/>
    <category term="berlin"/>
    <content type="html">&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt;&lt;a title="photo sharing" href="http://www.flickr.com/photos/dixiepistols/4119032129/"&gt;&lt;img alt="" style="border: solid 2px #000000;" src="http://farm3.static.flickr.com/2668/4119032129_a3d1c857c5_m.jpg" /&gt;&lt;/a&gt; &lt;br /&gt; &lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;  &lt;a href="http://www.flickr.com/photos/dixiepistols/4119032129/"&gt;Fritz Cola - Powerful Stuff&lt;/a&gt;  &lt;br /&gt;  Originally uploaded by &lt;a href="http://www.flickr.com/people/dixiepistols/"&gt;DixiePistols&lt;/a&gt;. &lt;/span&gt;&lt;/div&gt;Here's a shot of some fritz-kola, which I just finished enjoying. Good business.&lt;br /&gt;&lt;br /&gt;Man, I'll be leaving Berlin this Monday. It's been fun, and I've even gotten some work done, which is really good because I have this deadline coming up in December... Anyway, what have we learned?&lt;br /&gt;&lt;br /&gt;- I learned that autotuner has finally &lt;a href="http://www.youtube.com/watch?v=Xtx9Bz61tVc"&gt;made it to Germany&lt;/a&gt;.&lt;br /&gt;- Most German beer is very similar. That being said, &lt;a href="http://www.schultheiss.de/"&gt;Schultheiss&lt;/a&gt; was my favorite, and since you can't find it everywhere, &lt;a href="http://beeradvocate.com/beer/profile/737/2212/?sort=serv&amp;amp;servT=1&amp;amp;start=0"&gt;Jever&lt;/a&gt; will do as well.&lt;br /&gt;- Berlin is fun.&lt;br /&gt;- &lt;a href="http://en.wikipedia.org/wiki/D%C3%B6ner_kebab"&gt;Donner&lt;/a&gt; is delicious. But I already knew that.&lt;br /&gt;- The &lt;a href="http://www.phaidon.com/travel/"&gt;&amp;quot;Wallpaper*&amp;quot; series of guide books&lt;/a&gt; is kind of pretentious and lacks good maps, but being able to fit the book in my pocket makes up for any shortcomings. &lt;br /&gt;&lt;br /&gt;This week I went to an English bookstore called St. George's and got a few books for the way home. One, &amp;quot;&lt;a href="http://en.wikipedia.org/wiki/Goodbye_to_Berlin"&gt;Goodbye to Berlin&lt;/a&gt;,&amp;quot; I have almost finished. It's pretty good. It was the basis (indirectly) for the musical Cabaret. The other one, &amp;quot;&lt;a href="http://en.wikipedia.org/wiki/Berlin_Alexanderplatz"&gt;Berlin Alexanderplatz&lt;/a&gt;&amp;quot; I haven't started yet.&lt;br clear="all" /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:nolacoaster:123885</id>
    <link rel="alternate" type="text/html" href="http://nolacoaster.livejournal.com/123885.html"/>
    <link rel="self" type="text/xml" href="http://nolacoaster.livejournal.com/data/atom/?itemid=123885"/>
    <title>Flying Heavy Metal</title>
    <published>2009-11-17T19:09:25Z</published>
    <updated>2009-11-17T19:09:25Z</updated>
    <category term="music"/>
    <category term="airplanes"/>
    <content type="html">Did you know that &lt;a href="http://en.wikipedia.org/wiki/Bruce_Dickinson"&gt;Bruce Dickinson&lt;/a&gt;, lead singer of &lt;a href="http://en.wikipedia.org/wiki/Iron_Maiden"&gt;Iron Maiden&lt;/a&gt;, is a commercial airline pilot? In fact, he hosts a show about airplanes on Discovery Channel called, &amp;quot;Flying Heavy Metal,&amp;quot; and I've been &lt;a href="http://www.youtube.com/watch?v=Fqd17LoZd5o"&gt;watching it on YouTube&lt;/a&gt;. Awesome.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:nolacoaster:123620</id>
    <link rel="alternate" type="text/html" href="http://nolacoaster.livejournal.com/123620.html"/>
    <link rel="self" type="text/xml" href="http://nolacoaster.livejournal.com/data/atom/?itemid=123620"/>
    <title>Spree</title>
    <published>2009-11-16T20:23:02Z</published>
    <updated>2009-11-16T20:26:44Z</updated>
    <category term="pictures"/>
    <category term="berlin"/>
    <content type="html">&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt;&lt;a title="photo sharing" href="http://www.flickr.com/photos/dixiepistols/4109532561/"&gt;&lt;img alt="" style="border: solid 2px #000000;" src="http://farm3.static.flickr.com/2634/4109532561_84073d8889_m.jpg" /&gt;&lt;/a&gt; &lt;br /&gt; &lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;  &lt;a href="http://www.flickr.com/photos/dixiepistols/4109532561/"&gt;Reichstag People&lt;/a&gt;  &lt;br /&gt;  Originally uploaded by &lt;a href="http://www.flickr.com/people/dixiepistols/"&gt;DixiePistols&lt;/a&gt;. &lt;/span&gt;&lt;/div&gt;Yesterday was a great day! The weather was sunny and perfect for site-seeing. We finally did some of the most touristy stuff in Berlin, and as a result, I got some pretty good pictures. Some of them are posted here! Most of them, however, are stuck on my stoopid memory card*.&lt;br /&gt;&lt;br /&gt;So we started by taking a big walk down &amp;quot;The Spree,&amp;quot; the main and most quaint river in Berlin. We saw &lt;a href="http://www.flickr.com/photos/dixiepistols/4109517533/"&gt;people with letters&lt;/a&gt;. We saw &lt;a href="http://www.flickr.com/photos/dixiepistols/4110284090/"&gt;architectural&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/dixiepistols/4110285960/"&gt;marvels&lt;/a&gt;. We also spent a ton of time waiting in line to see &lt;a href="http://www.flickr.com/photos/dixiepistols/4110290598/"&gt;The Reichstag&lt;/a&gt;, the seat of the &lt;a href="http://www.flickr.com/photos/dixiepistols/4109523813/"&gt;German&lt;/a&gt; government. This is possibly the most touristy thing you can do in Berlin, and appropriately we waiting in line for line an hour. But once we got up there, the&lt;a href="http://www.flickr.com/photos/dixiepistols/4109529379/"&gt; views&lt;/a&gt; were &lt;a href="http://www.flickr.com/photos/dixiepistols/4109535603/"&gt;great&lt;/a&gt;. There was even some kind of session going on inside, as you can see from the picture to the right.&lt;br /&gt;&lt;br /&gt;We continued along to the Brandenburg Gate, the Holocaust memorial, and finally a trip to Prenzlauer Berg, a pretty cool neighborhood, for dinner (pizza!) and drinks. The drinks were at a very cool bar called &lt;a href="http://www.qype.co.uk/place/78827-Neue-Odessa-Bar-Berlin"&gt;Neue Odessa&lt;/a&gt;. I would highly recommend it for its Victorian wallpaper and delicious drinks. Singapore Sling... mmm...&lt;br /&gt;&lt;br /&gt;*Every time I try to copy a bunch of pictures from my camera's memory card to my laptop, I get an annoying &amp;quot;Memory Parity Check Failure,&amp;quot; blue screen of death. Arrrrrgh!&lt;br clear="all" /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:nolacoaster:123246</id>
    <link rel="alternate" type="text/html" href="http://nolacoaster.livejournal.com/123246.html"/>
    <link rel="self" type="text/xml" href="http://nolacoaster.livejournal.com/data/atom/?itemid=123246"/>
    <title>OOPSLA Student Research Competition: Results</title>
    <published>2009-11-09T10:34:26Z</published>
    <updated>2009-11-09T10:34:26Z</updated>
    <category term="oopsla 2009"/>
    <category term="nerds"/>
    <content type="html">I guess I never mentioned this because of how hectic things were the last two weeks, but I &lt;em&gt;did&lt;/em&gt; participate in the &lt;a href="http://www.oopsla.org/oopsla2009/cfp/due-july-02-2009/7-src"&gt;OOPSLA 2009 Student Research Competition&lt;/a&gt;. The first day, I presented &lt;a href="http://www.cs.cmu.edu/~nbeckman/presentations/oopsla09_src_poster.pdf"&gt;my poster&lt;/a&gt; in an all-conference poster session. Owing to the excellent position of my poster (Yay for alphabetically-early last names!) I talked to a ton of people, thus giving me the necessary confidence for when the actual judges came to talk to me.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;That night, I had a message in my hotel room that I had passed on to the final round, meaning I needed to give a short presentation explaining my work. Of course I didn't have one, so I wrote one there in the conference. The results, were pretty good. I think I gave a good talk. &lt;a href="http://www.cs.cmu.edu/~nbeckman/presentations/oospla_2009_src.ppt"&gt;My slides&lt;/a&gt; were fine. I definitely could have answered the questions better.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Nonetheless, I won third place, which amazingly means I will receive a plaque and a small monetary prize. Tudo Dumitraş, another CMU student from a different research group, won first prize.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Therefore, from this point forward, I shall refer to my thesis work as &lt;strong&gt;award-winning research&lt;/strong&gt;.&lt;br type="_moz" /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:nolacoaster:123133</id>
    <link rel="alternate" type="text/html" href="http://nolacoaster.livejournal.com/123133.html"/>
    <link rel="self" type="text/xml" href="http://nolacoaster.livejournal.com/data/atom/?itemid=123133"/>
    <title>Alexanderplatz</title>
    <published>2009-11-07T16:51:09Z</published>
    <updated>2009-11-07T16:51:09Z</updated>
    <category term="berlin"/>
    <content type="html">My first day of site-seeing in Berlin, and it was a doozy! We started off in Alexanderplatz*, which is sort of the center of East Berlin. They have they crazy TV Tower that looks like Sputnik on a pole. We walked around that whole area, which has a number of neat shops**, wide streets and was filled with people. The weather was sunny today, for the first time that I've been here, but it was still pretty cold.&lt;br /&gt;&lt;br /&gt;We saw a couple neat art exhibitions. The first was &lt;em&gt;Scorpio's Garden&lt;/em&gt;, which was just a sort of temporary gallery of contemporary art made by Berlin artists. The highlight was a video of a guy blowing up a raft with a tube connected to an accordian that he played.&lt;br /&gt;&lt;br /&gt;Then we went to the German national museum for a retrospective on Berlin art during the Cold War. There was a bunch of stuff, some of it explicitly commenting on the division of Germany, and others more abstract. My favorite was the Literature Sausage made by an artist who would shred books by authors he disliked, add spices and wrap the pieces up on sausage casing.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Finally we chilled out at this little coffee shop with a pig for a logo, where over the speaker a woman sang &amp;quot;Comfortably Numb&amp;quot; by Pink Floyd in German. All in all a good day. Pictures soon and more fun tomorrow!&lt;br /&gt;&lt;br /&gt;*&amp;quot;I've platz-ed myself&amp;quot; and &amp;quot;I almost platz-ed myself&amp;quot; have become my go-to comedy phrases for the time-being.&lt;br type="_moz" /&gt;**One of them had nutcrackers. I was delighted to learn that the German word is Nusseknocker, or Nu&amp;szlig;eknocker if you're feeling sassy.&lt;br /&gt;&lt;br type="_moz" /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:nolacoaster:122635</id>
    <link rel="alternate" type="text/html" href="http://nolacoaster.livejournal.com/122635.html"/>
    <link rel="self" type="text/xml" href="http://nolacoaster.livejournal.com/data/atom/?itemid=122635"/>
    <title>Henne &amp; Trendy Bar</title>
    <published>2009-11-07T10:48:44Z</published>
    <updated>2009-11-07T10:48:44Z</updated>
    <category term="food"/>
    <category term="berlin"/>
    <content type="html">Last night we went out of the house, pretty much for the first time since I've been here. We went to two places.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Henne&lt;/strong&gt; - was a cozy restaurant where they primarily serve fried chicken. Sounds a little funny, but actually is was very classically German. The inside had a great looking bar area and lots of wood, kind of that winter lodge feeling. Apparently it's one of the older restaurants in Berlin, but it's casual. The Chicken was excellent! We each had a half chicken. And the potato salad was cold and delicious, filled with mayonnaise-y flavor.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Some Trendy Bar&lt;/strong&gt; - forgot the name of this place. Actually I never knew it because it was the kind of place that doesn't go out of its way to tell you what it's called. This trendy bar had cocktails and a cool decor inside. It was full of hipsters and easily could have been transported to the US without me noticing. Would recommend.&lt;br type="_moz" /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:nolacoaster:122398</id>
    <link rel="alternate" type="text/html" href="http://nolacoaster.livejournal.com/122398.html"/>
    <link rel="self" type="text/xml" href="http://nolacoaster.livejournal.com/data/atom/?itemid=122398"/>
    <title>Berlin</title>
    <published>2009-11-04T12:52:40Z</published>
    <updated>2009-11-04T12:52:40Z</updated>
    <category term="planes"/>
    <category term="berlin"/>
    <content type="html">I finally made it to Berlin yesterday. Today I am trying to work, but I am fighting jet-lag pretty hard. The period right after lunch, where I'm full of food and it's 6am or whatever in Pittsburgh is always the hardest part of my day. I planned that time to read a paper, but that may have been a mistake. I am having to fight very hard to stay awake.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Lame parts&lt;/strong&gt;: It's snowing here... and cold. So the weather is actually kind of worse than in Pittsburgh.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Cool parts&lt;/strong&gt;: I was bumped off my flight and put on a business class ticket one day later. I think that was the first time I've ever flown business class across the ocean, when it actually matters. Definitely nice, but probably not worth ten times the cost of a normal ticket, which is what I believe it normally costs. Also, there are a bunch of cool little restaurants near-by with soups and things, and a bunch of neat &lt;strike&gt;coffee&lt;/strike&gt; kaffee shops too.&lt;br type="_moz" /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:nolacoaster:122000</id>
    <link rel="alternate" type="text/html" href="http://nolacoaster.livejournal.com/122000.html"/>
    <link rel="self" type="text/xml" href="http://nolacoaster.livejournal.com/data/atom/?itemid=122000"/>
    <title>Last Night's Concert</title>
    <published>2009-10-31T02:50:53Z</published>
    <updated>2009-10-31T02:50:53Z</updated>
    <category term="sick ridiculous and the sick riduculous"/>
    <content type="html">Man, it's been a busy freaking week! I'll begin at the end: Last night was the third club gig for Sick Ridiculous and the Sick Ridiculous, and our second at the Smiling Moose. There were good times all around. First off, gotta give props to those of you who made it out. We really appreciate it, and we don't take any of our fans for granted! Of course, we also don't expect all of our fans to come to every single show! But hopefully those who were there had a good time.&lt;br /&gt;&lt;br /&gt;We had a couple surprises in store. First, we played with an electric guitar for the first time every. Tom &amp;amp; I passed the electric guitar back &amp;amp; forth for max rock, although some songs we stilled played with two acoustic guitars... Actually my guitar gets out of tune really easily because of my dumb Bigsby Tailpiece. (I am pretty sure I have complained about this before.) So there were a couple times where it went out of tune during a song, but for the most part it was all good. We also dressed up in a band uniform: White shirts, black ties and black pants. Some lady at the bar asked us where we worked. We told her, &amp;quot;we work in a band.&amp;quot;&lt;br /&gt;&lt;br /&gt;The other bands on balance were pretty good, but way too loud. My ears have been messed up all day today. But seriously, this band &lt;a href="http://www.myspace.com/stonecoldkillermusic"&gt;Stone Cold Killer&lt;/a&gt; is really great &amp;amp; hilarious. They are sort of like a new 70s-style metal band. You could probably compare them to &lt;a href="http://en.wikipedia.org/wiki/Eagles_of_Death_Metal"&gt;Eagles of Death Metal&lt;/a&gt;, or maybe the &lt;a href="http://en.wikipedia.org/wiki/The_Supersuckers"&gt;Supersuckers&lt;/a&gt;. Definitely check them out.&lt;br type="_moz" /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:nolacoaster:121687</id>
    <link rel="alternate" type="text/html" href="http://nolacoaster.livejournal.com/121687.html"/>
    <link rel="self" type="text/xml" href="http://nolacoaster.livejournal.com/data/atom/?itemid=121687"/>
    <title>Sick Ridiculous Closes Out Rocktober</title>
    <published>2009-10-23T03:39:18Z</published>
    <updated>2009-10-24T15:45:42Z</updated>
    <category term="pittsburgh"/>
    <category term="sick ridiculous and the sick riduculous"/>
    <content type="html">Sick Ridiculous and the Sick Ridiculous has a show coming up next Thursday! It'll be our first club gig in quite a while, so you should definitely come check it out. We have a few surprises up our sleeves. Also, the headlining band will be &lt;a href="http://www.soundofurchin.com/"&gt;Sound of Urchin&lt;/a&gt;&amp;nbsp;(on their Rocktober Tour), a band that has been on the Late Late Show and that has opened up for Tenacious D. So, we'll be in good company. Here's the facts JACK:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;When&lt;/strong&gt;: Next Thursday, October 29th (Wear your Halloween costumes)&lt;br /&gt;&lt;strong&gt;Where&lt;/strong&gt;: &lt;a href="http://www.smiling-moose.com/"&gt;Smiling Moose&lt;/a&gt; on the South Side (&lt;a href="http://maps.google.com/maps?ll=40.428599,-79.984942&amp;amp;spn=0.013688,0.027874&amp;amp;t=h&amp;amp;z=16"&gt;1306 E. Carson&lt;/a&gt;) This show is upstairs. If you saw us there last time, this is different.&lt;br /&gt;&lt;strong&gt;How Much Bling&lt;/strong&gt;: 9USD&lt;br /&gt;&lt;strong&gt;With Whom&lt;/strong&gt;: After the Fall, Stone Cold Killer and Sound of Urchin (We will go first)&lt;br /&gt;&lt;strong&gt;At what time&lt;/strong&gt;: Web site says 7:30&lt;br type="_moz" /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:nolacoaster:121576</id>
    <link rel="alternate" type="text/html" href="http://nolacoaster.livejournal.com/121576.html"/>
    <link rel="self" type="text/xml" href="http://nolacoaster.livejournal.com/data/atom/?itemid=121576"/>
    <title>Scavenger Hunt Location: And the Winner Is...</title>
    <published>2009-10-21T21:10:59Z</published>
    <updated>2009-10-21T21:10:59Z</updated>
    <category term="urban hike"/>
    <category term="scavenger hunt"/>
    <content type="html">This Saturday is the annual &lt;a href="http://www.urbanhike.org/"&gt;Urban Hike&lt;/a&gt; Scavenger Hunt. Feel free to join us. Should be a great time! Here's the official press release:&lt;br /&gt;&lt;br type="_moz" /&gt;&lt;br /&gt;Although the competition was intense between the four locations that made it to the final round, the Urban Hike Committee agreed that Bloomfield's bid was the most compelling.&lt;br /&gt;&lt;br /&gt;Join us there on Saturday October 24th for our annual Scavenger Hunt. We'll meet in Friendship Parklet (near the intersection of Friendship and Mathilda) at 1:00pm. Get ready to compete against teams from all around the world (well, all around the city, anyway) for bragging rights, and maybe even a few prizes (we might be just a little short on medals).&lt;br /&gt;&lt;br /&gt;Your team will need one digital camera, and a connector to upload photos to a laptop (we can't accept photos via e-mail). We also highly recommend you delete any non-Urban Hike photos from your camera prior to the event - this is mostly for speed and ease of scoring, but for your own embarrassment factor as well. ;-)&lt;br /&gt;&lt;br /&gt;Form a team of up to 5 people, or come on your own and we'll put you on a team. RSVP's from teams would be much appreciated, and you can respond to &lt;a href="mailto:info@urbanhike.org"&gt;info@urbanhike.org&lt;/a&gt;, or on Facebook (become a Facebook Fan of Urban Hike, if you haven't already!).</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:nolacoaster:121215</id>
    <link rel="alternate" type="text/html" href="http://nolacoaster.livejournal.com/121215.html"/>
    <link rel="self" type="text/xml" href="http://nolacoaster.livejournal.com/data/atom/?itemid=121215"/>
    <title>IMPAQT!!!</title>
    <published>2009-10-21T20:46:22Z</published>
    <updated>2009-10-21T20:46:22Z</updated>
    <category term="qatar"/>
    <category term="cmu"/>
    <content type="html">I just finished my application to CMU's &lt;a href="http://www.studentaffairs.cmu.edu/dean/impaqt/index.html"&gt;IMPAQT project&lt;/a&gt;. This project attempts to better connect CMU's Pittsburgh campus with its other campus in Doha, Qatar. I think I made some good points in my application, but &amp;nbsp;I always have trouble with these things. I also tried to keep it light. Let's see how that works out.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:nolacoaster:121006</id>
    <link rel="alternate" type="text/html" href="http://nolacoaster.livejournal.com/121006.html"/>
    <link rel="self" type="text/xml" href="http://nolacoaster.livejournal.com/data/atom/?itemid=121006"/>
    <title>BlogFace in the BlogSpot?</title>
    <published>2009-10-12T22:02:11Z</published>
    <updated>2009-10-12T22:02:11Z</updated>
    <category term="nerds"/>
    <content type="html">Hey folks. I have lately been thinking about moving this blog over to a different service, most likely Blogger. I wanted to see if anyone had any comments or suggestions. I know this will mean a few changes. Among other things, those of you who follow me as a friend on livejournal will no longer get my updates. &lt;a href="http://www.blogface.org"&gt;Blogface.org&lt;/a&gt;, which now resolves to this blog would naturally be updated to resolve to my new blog. This could mean a change to those of you who subscribe to my livejournal RSS feed. I have thought about that. In order to future-proof yourself, you could change that subscription to instead point to &lt;a href="http://feed.blogface.org"&gt;feed.blogface.org&lt;/a&gt;, which as of today will always point to the current RSS feed.&lt;br /&gt;&lt;br /&gt;The main reason I am contemplating a switch is flexibility. Livejournal just isn't that flexible. Its methods for creating blog entries can also be somewhat painful. I can't post cool gadgets like a Last.fm most-recently played songs widget. There are only a limited number of templates. I cannot install Google Analytics. Other things.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;So what do you think. Is this a bad idea? Would you be adversely affected?&lt;br /&gt;&lt;br type="_moz" /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:nolacoaster:120770</id>
    <link rel="alternate" type="text/html" href="http://nolacoaster.livejournal.com/120770.html"/>
    <link rel="self" type="text/xml" href="http://nolacoaster.livejournal.com/data/atom/?itemid=120770"/>
    <title>An Evening With Mike Doughty</title>
    <published>2009-10-10T23:26:27Z</published>
    <updated>2009-10-10T23:28:03Z</updated>
    <category term="music"/>
    <category term="mike doughty"/>
    <content type="html">&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt;&lt;a title="photo sharing" href="http://www.flickr.com/photos/dixiepistols/3999539664/"&gt;&lt;img alt="" style="border: solid 2px #000000;" src="http://farm3.static.flickr.com/2450/3999539664_a2c0a294e5_m.jpg" /&gt;&lt;/a&gt; &lt;br /&gt; &lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;  &lt;a href="http://www.flickr.com/photos/dixiepistols/3999539664/"&gt;An Evening With Mike Doughty&lt;/a&gt;  &lt;br /&gt;  Originally uploaded by &lt;a href="http://www.flickr.com/people/dixiepistols/"&gt;DixiePistols&lt;/a&gt;. &lt;/span&gt;&lt;/div&gt;On Thursday I saw Mike Doughty at Club Cafe in Pittsburgh. He was touring in support of his new CD, &amp;quot;Happy Man, Sad Man,&amp;quot; which I just purchased today and already enjoy. The concert was pretty much everything I could ask  for in a concert-going experience.&lt;br /&gt;&lt;br /&gt;So first off, as you might be able to tell from the ticket, this was AN EVENING with Mike Doughty. This is industry code for, &amp;quot;there are no other bands playing.&amp;quot; This was, frankly, awesome. Yes, I know it is important for bands to have opening bands, to increase exposure for up-and-coming bands (which, by the way, is why you should come see &lt;a href="http://www.smiling-moose.com/events/index.php"&gt;Sick Ridiculous &amp;amp; the Sick Ridiculous October 29th at The Smiling Moose&lt;/a&gt;!) but sometimes you want to show up at 7pm, rock for the next hour and leave. This is exactly what happened. &lt;br /&gt;&lt;br /&gt;Moreover, the sound at Club Cafe was great, and we had a table with a great view. See normally Mike Doughty plays at Mr. Small's-sized venues, but this time he decided to play three shows at Club Cafe instead. In this case smaller is definitely better! This is now the third time at least I have seen Mike Doughty in some form, the second time where it was just him, and acoustic guitar and his boy Scrap Livingston on the cello. &lt;br /&gt;&lt;br /&gt;As a nice bonus, Mike put out a jar for questions from the audience. He answered the mostly-funny questions over the course of the evening, and I think through this we gotta a pretty good sense of his personality. Also, he like me, does not like when people in the back are talking and yelling things during the show. So he boldly (if somewhat confrontationally) told those people to shut up.&lt;br /&gt;&lt;br /&gt;Um, and that was about it. He played most of my favorites, so it was a good time. His voice sounds great, low and gravelly. Also, they recorded the show and offered it for sale immediately afterwards, which I thought was pretty cool, although I didn't have any money so I didn't actually buy it.&lt;br clear="all" /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:nolacoaster:120498</id>
    <link rel="alternate" type="text/html" href="http://nolacoaster.livejournal.com/120498.html"/>
    <link rel="self" type="text/xml" href="http://nolacoaster.livejournal.com/data/atom/?itemid=120498"/>
    <title>Boom</title>
    <published>2009-10-08T01:09:37Z</published>
    <updated>2009-10-08T01:09:37Z</updated>
    <category term="music"/>
    <content type="html">This song is unbelievably funky:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=F5lIYpV8b54"&gt;&amp;quot;You Dropped a Bomb on Me,&amp;quot; by the Gap Band&lt;/a&gt;&amp;nbsp;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:nolacoaster:120261</id>
    <link rel="alternate" type="text/html" href="http://nolacoaster.livejournal.com/120261.html"/>
    <link rel="self" type="text/xml" href="http://nolacoaster.livejournal.com/data/atom/?itemid=120261"/>
    <title>Technical Challenge: SML</title>
    <published>2009-10-05T02:20:56Z</published>
    <updated>2009-10-05T02:20:56Z</updated>
    <category term="ml"/>
    <category term="nerds"/>
    <content type="html">Success! I finally got &lt;a href="http://www.smlnj.org/"&gt;SMLNJ&lt;/a&gt; and the &lt;a href="http://mlton.org/"&gt;MLton&lt;/a&gt; optimizing compiler to work with Windows. I am very happy about this, as I had been trying for quite a while and ran into various annoying compilation and DLL problems. (Really mlton was the difficult one.) Here's how I did it.:&lt;ul&gt;&lt;li&gt;Download Sun's &lt;a href="http://www.virtualbox.org/"&gt;VirtualBox&lt;/a&gt; VM software.&lt;/li&gt;&lt;li&gt;Install &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Use apt-get to install smlnj and mlton.&lt;/li&gt;&lt;/ul&gt;Seriously. I really think this is the way to do it and I am perfectly happy to launch Linux every time I want to program, it's just so much easier in Linux land. I like cygwin generally, but I have found that if you want to install some software and there's not already a distribution for it, it can make your life miserable. Ubuntu, on the other hand, has like 9 million packages, and even includes obscure stuff like sml. Problem solved!&lt;br type="_moz" /&gt;&lt;br type="_moz" /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:nolacoaster:119896</id>
    <link rel="alternate" type="text/html" href="http://nolacoaster.livejournal.com/119896.html"/>
    <link rel="self" type="text/xml" href="http://nolacoaster.livejournal.com/data/atom/?itemid=119896"/>
    <title>Not Really Funny, Just True</title>
    <published>2009-10-02T02:25:18Z</published>
    <updated>2009-10-02T02:25:18Z</updated>
    <category term="fruit juice"/>
    <content type="html">With apologies to &lt;a href="http://www.collegehumor.com/picture:1920250"&gt;College Humor&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;img alt="Pick two: 100% Fruit Juice, Cheap, Does Not Contain Pear Juice" src="http://www.nelsbeckman.com/pictures/fruit_juice.png" /&gt;&lt;br type="_moz" /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:nolacoaster:119766</id>
    <link rel="alternate" type="text/html" href="http://nolacoaster.livejournal.com/119766.html"/>
    <link rel="self" type="text/xml" href="http://nolacoaster.livejournal.com/data/atom/?itemid=119766"/>
    <title>Separating Java: Objects</title>
    <published>2009-09-25T21:27:14Z</published>
    <updated>2009-09-25T21:27:14Z</updated>
    <category term="java"/>
    <category term="functional programming"/>
    <category term="nerds"/>
    <category term="oo"/>
    <content type="html">Now, what about objects? Certainly Java, as an object-oriented language, provides many features for creating an using objects. Many of those those features, unfortunately, seem to obfuscate the &lt;em&gt;essence&lt;/em&gt; of objects. In some ways the most important features of objects are that they implement an interface, and that we can treat them as merely their interface. Here is an interface, and means of constructing objects that implement it. Notes to follow.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;public interface&lt;/strong&gt; IntSet2 {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;public &lt;/strong&gt;IntSet2 add(&lt;strong&gt;int &lt;/strong&gt;i);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;public &lt;/strong&gt;boolean contains(&lt;strong&gt;int &lt;/strong&gt;i);&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;}&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;final public class&lt;/strong&gt; IntSet2s {&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;private static&lt;/strong&gt; IntSet2 append(&lt;strong&gt;final int&lt;/strong&gt; i, &lt;strong&gt;final &lt;/strong&gt;IntSet2 set) {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &lt;strong&gt;&amp;nbsp;return new&lt;/strong&gt; IntSet2() {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;strong&gt;public &lt;/strong&gt;IntSet2 add(&lt;strong&gt;int &lt;/strong&gt;i) {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;strong&gt;return &lt;/strong&gt;append(i, &lt;strong&gt;this&lt;/strong&gt;);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;strong&gt;public &lt;/strong&gt;&lt;strong&gt;boolean &lt;/strong&gt;contains(&lt;strong&gt;int &lt;/strong&gt;j) {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;strong&gt;return &lt;/strong&gt;i == j || set.contains(j);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;};&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;public &lt;/strong&gt;IntSet2 singleItemIntSet(&lt;strong&gt;final &lt;/strong&gt;&lt;strong&gt;int &lt;/strong&gt;i) {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;strong&gt;return &lt;/strong&gt;&lt;strong&gt;new &lt;/strong&gt;IntSet2() {&lt;span class="Apple-tab-span" style="white-space:pre"&gt;			&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;strong&gt;public &lt;/strong&gt;IntSet2 &lt;strong&gt;add&lt;/strong&gt;(&lt;strong&gt;int &lt;/strong&gt;i) {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;strong&gt;return&lt;/strong&gt; append(i, &lt;strong&gt;this&lt;/strong&gt;);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;strong&gt;public &lt;/strong&gt;&lt;strong&gt;boolean &lt;/strong&gt;&lt;strong&gt;contains&lt;/strong&gt;(&lt;strong&gt;int &lt;/strong&gt;j) {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;strong&gt;return &lt;/strong&gt;i == j;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;};&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;public &lt;/strong&gt;IntSet2 evenIntSet() {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;strong&gt;return&lt;/strong&gt; &lt;strong&gt;new &lt;/strong&gt;IntSet2() {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;strong&gt;public &lt;/strong&gt;IntSet2 &lt;strong&gt;add&lt;/strong&gt;(&lt;strong&gt;int &lt;/strong&gt;i) {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;strong&gt;return &lt;/strong&gt;append(i, &lt;strong&gt;this&lt;/strong&gt;);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;strong&gt;public boolean&lt;/strong&gt; contains(&lt;strong&gt;int &lt;/strong&gt;i) {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;strong&gt;return &lt;/strong&gt;i % 2 == 0;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;			&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;};&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;public &lt;/strong&gt;IntSet2 emptyIntSet() {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;strong&gt;return &lt;/strong&gt;&lt;strong&gt;new &lt;/strong&gt;IntSet2(){&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;strong&gt;public &lt;/strong&gt;IntSet2 add(&lt;strong&gt;int &lt;/strong&gt;i) {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;strong&gt;return &lt;/strong&gt;singleItemIntSet(i);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;strong&gt;public &lt;/strong&gt;&lt;strong&gt;boolean &lt;/strong&gt;contains(&lt;strong&gt;int &lt;/strong&gt;i) {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;strong&gt;return &lt;/strong&gt;&lt;strong&gt;false&lt;/strong&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;};&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;strong&gt;Notes&lt;br /&gt;&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;All the objects created in this program are anonymous instances of the IntSet2 interface. Any code that want to can implement this interface!&amp;nbsp;&lt;/li&gt;&lt;li&gt;We have completely side-stepped classes. We use constructor functions to create instances of IntSet2.&lt;/li&gt;&lt;li&gt;Code cannot use an instanceof test to tell which implementation of the IntSet2 is being used. In fact, it has no way of telling the difference between the different implementations other than by observing their behavior through the interface.&lt;/li&gt;&lt;li&gt;Each implementation of interface can have a completely different representation, and it is impossible, even for instances of the same interface, to see the representation of an IntSet2.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Benefits&lt;/strong&gt;: Programming to interfaces can give great flexibility by allowing any piece of code to implement it, so long as the implementation conforms to the documented behavior.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Caveats&lt;/strong&gt;: It can sometimes be hard to implement efficient code in some cases where this pure object style is used.&lt;br /&gt;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/div&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:nolacoaster:119323</id>
    <link rel="alternate" type="text/html" href="http://nolacoaster.livejournal.com/119323.html"/>
    <link rel="self" type="text/xml" href="http://nolacoaster.livejournal.com/data/atom/?itemid=119323"/>
    <title>Separating Java: ADTs</title>
    <published>2009-09-25T20:49:57Z</published>
    <updated>2009-09-25T20:51:56Z</updated>
    <category term="java"/>
    <category term="functional programming"/>
    <category term="nerds"/>
    <category term="oo"/>
    <content type="html">In Java, &lt;a href="http://en.wikipedia.org/wiki/Abstract_data_type"&gt;Abstract Data Types&lt;/a&gt; and Objects are rather intertwined, often to the detriment of programmers. In this post and the next, I'll try to separate the two concepts as best as I understand. Note that most of these ideas, and the Set example specifically, come to me from William Cook's recent essay. The ideas are also well-covered in TAPL, without the Java code. &lt;br /&gt;&lt;br /&gt;Here, I will use a subset of Java's features to express an ADT, such as one would have in a language like ML or Ada. It's a (not very efficient) set. Notes follow.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;final &lt;/strong&gt;&lt;strong&gt;public &lt;/strong&gt;&lt;strong&gt;class &lt;/strong&gt;IntSet {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;private &lt;/strong&gt;&lt;strong&gt;int&lt;/strong&gt;[] members;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;private &lt;/strong&gt;IntSet() {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;strong&gt;this&lt;/strong&gt;.members = &lt;strong&gt;new &lt;/strong&gt;int[0]; &amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;public static&lt;/strong&gt; IntSet empty() {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;strong&gt;return new&lt;/strong&gt; IntSet();&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;public static&lt;/strong&gt; IntSet add(IntSet set, &lt;strong&gt;int &lt;/strong&gt;i) {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;strong&gt;if&lt;/strong&gt;( Arrays.binarySearch(set.members, i) != -1 ) {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;strong&gt;return &lt;/strong&gt;set;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;strong&gt;else &lt;/strong&gt;{&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;IntSet result = &lt;strong&gt;new &lt;/strong&gt;IntSet();&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;int old_length = set.members.length;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;result.members = Arrays.copyOf(set.members, old_length + 1);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;result.members[old_length] = i;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;Arrays.sort(result.members);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;strong&gt;return &lt;/strong&gt;result;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;public static boolean&lt;/strong&gt; contains(IntSet set, &lt;strong&gt;int &lt;/strong&gt;i) {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;strong&gt;return &lt;/strong&gt;Arrays.binarySearch(set.members, i) != -1;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;public static&lt;/strong&gt; IntSet union(IntSet s1, IntSet s2) { /* Performs merge sort. */ }&lt;/div&gt;&lt;div&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Notes:&lt;/strong&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;The class Set is the abstract data type. It has been declared final, which tells the programmer that the representation is fixed and known completely inside of the class.&lt;/li&gt;&lt;li&gt;The members field is private to hide the representation.&amp;nbsp;&lt;/li&gt;&lt;li&gt;The constructor is private so that new Sets must be created through one of the existing introduction means, namely empty().&lt;/li&gt;&lt;li&gt;All methods are static. No dynamic dispatch is being used here. We do not want to send messages to objects that can handle that message in an arbitrary way, rather we want to perform some operation on a hidden representation by functions inside of the abstraction that are allowed to view the hidden representation.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Benefits&lt;/strong&gt;: Functions inside the Set class can operate on sets with complete knowledge of a set's representation. This can occasionally be beneficial, particularly in cases where performance is important. Knowing that all sets are implemented as sorted arrays of ints can sometimes allow me to write better performing methods. (Binary methods in particular, but other methods as well.) For instance, in the union method above which is incomplete, can perform its task using merge sort if that is more efficient. Still, the representation is hidden from the rest of the program, so we can change things internally without affecting code as long as we don't change the public methods.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Caveats&lt;/strong&gt;: No one else can define a Set that is compatible with this Set! If a certain method expects an IntSet of the sort we've just defined, then the IntSet can only be created through this class, and not through any other means. The representation for all IntSets is fixed (but hidden).&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:nolacoaster:119065</id>
    <link rel="alternate" type="text/html" href="http://nolacoaster.livejournal.com/119065.html"/>
    <link rel="self" type="text/xml" href="http://nolacoaster.livejournal.com/data/atom/?itemid=119065"/>
    <title>Talk: Concurrent Object Protocols Experience Report</title>
    <published>2009-09-22T14:11:58Z</published>
    <updated>2009-09-22T14:11:58Z</updated>
    <category term="nerds"/>
    <content type="html">Yesterday in &lt;a href="http://www.cs.cmu.edu/~scherlis/sssg/"&gt;SSSG&lt;/a&gt;&amp;nbsp;(that class&amp;nbsp;I have to take every semester until I&amp;nbsp;graduate)&amp;nbsp;I gave a talk entitled, &amp;quot;Case Studies in&amp;nbsp;Concurrent Object Protocols.&amp;quot;&amp;nbsp;It was really an experience report describing the use of my approach on some open source programs. I used my tool &lt;a href="http://code.google.com/p/pluralism/"&gt;Sync-or-Swim&lt;/a&gt; to verify some open source programs, and I encountered a couple of neat patterns which I describe.&amp;nbsp;If you're intrested, check out &lt;a href="http://www.cs.cmu.edu/~nbeckman/presentations/Case%20Studies%20in%20Concurrent%20Object%20Protocols%20-%209-21-09.pptx"&gt;the slides&lt;/a&gt;. I'm afraid you need something that can read PPTX, but if you're interested and you can't read that, let me know and I'll put it up in a different format.&amp;nbsp;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:nolacoaster:119021</id>
    <link rel="alternate" type="text/html" href="http://nolacoaster.livejournal.com/119021.html"/>
    <link rel="self" type="text/xml" href="http://nolacoaster.livejournal.com/data/atom/?itemid=119021"/>
    <title>Simply Typed Lambda Calculus vs. Untyped</title>
    <published>2009-09-17T17:35:44Z</published>
    <updated>2009-09-17T17:35:44Z</updated>
    <category term="nerds"/>
    <content type="html">Today I learned something new!&amp;nbsp;At first it was startling, but in hindsight it makes perfect sense:&amp;nbsp;The Simply Typed Lambda Calculus is not Turing complete. Any well-typed program will eventually terminate, and the intuition here is that your program can only have a finite number of arrow types, and evaluation will always reduce the number of arrow-typed &lt;em&gt;things&lt;/em&gt; that you have around. The Untyped Lambda Calculus, however, allows programs that never terminiate. I guess the Y-combinator is a pretty good example here. I once learned that the Untyped Lambda Calculus can be embedded inside the Typed Lambda&amp;nbsp;Calculus by having essentially one type, &lt;em&gt;the everything type&lt;/em&gt;.&amp;nbsp;So I&amp;nbsp;guess this makes sense, since there are no arrow types that can decrease monotonically...&lt;br /&gt;&lt;br /&gt;Now I have more questions:&amp;nbsp;&lt;br /&gt;Does this mean the untyped lambda calculus &lt;em&gt;is&lt;/em&gt; Turing complete?&lt;br /&gt;How does the encoding of the untyped lambda calculus into the lambda calculus work?&amp;nbsp;I mean, don't functions always have to have function type?&amp;nbsp;Or is the &lt;em&gt;everything type&lt;/em&gt;&amp;nbsp;some kind of function type?</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:nolacoaster:118663</id>
    <link rel="alternate" type="text/html" href="http://nolacoaster.livejournal.com/118663.html"/>
    <link rel="self" type="text/xml" href="http://nolacoaster.livejournal.com/data/atom/?itemid=118663"/>
    <title>Urban Hike this weekend in Verona</title>
    <published>2009-09-16T15:03:28Z</published>
    <updated>2009-09-16T15:03:28Z</updated>
    <category term="urban hike"/>
    <content type="html">There's going to be an &lt;a href="http://www.urbanhike.org"&gt;Urban Hike&lt;/a&gt; this weekend in Verona, PA. I'll be there and I think it will be fun. Hope you can make it out. Full details below:&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;span class="Apple-style-span" style="font-family: Verdana; "&gt;Fall is coming, and Urban Hike is heading to fair Verona on Saturday September 19th at 10:30am. We'll meander along the river, get some aerobic exercise in search of great views, and we might even end the hike with some group &amp;quot;hugs.&amp;quot; Alongthe way we'll learn about Celoron (no, not the vegetable, but an important part of Pittsburgh history). As usual there will be a local dinning option for those who want to stick around after the 3 hour (more or less) hike.&lt;br /&gt;&lt;br /&gt;We'll meet at the parking area on E. Railroad Ave. between South Ave. and James St.&lt;/span&gt;&lt;/em&gt;&lt;br type="_moz" /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:nolacoaster:118457</id>
    <link rel="alternate" type="text/html" href="http://nolacoaster.livejournal.com/118457.html"/>
    <link rel="self" type="text/xml" href="http://nolacoaster.livejournal.com/data/atom/?itemid=118457"/>
    <title>Chief's</title>
    <published>2009-09-09T23:48:17Z</published>
    <updated>2009-09-09T23:50:11Z</updated>
    <category term="pittsburgh"/>
    <category term="bars"/>
    <content type="html">I&amp;nbsp;&lt;em&gt;highly recommend&lt;/em&gt; reading&amp;nbsp;the Google Maps &lt;a href="http://maps.google.com/maps?geocode=&amp;amp;q=beer&amp;amp;f=l&amp;amp;sll=40.453144,-79.952971&amp;amp;sspn=0.006433,0.013937&amp;amp;ie=UTF8&amp;amp;radius=0.37&amp;amp;rq=1&amp;amp;ev=p&amp;amp;ll=40.45276,-79.952094&amp;amp;spn=0.001608,0.003484&amp;amp;z=19&amp;amp;iwloc=A&amp;amp;iwd=1&amp;amp;cid=9605494021306471819&amp;amp;dtab=2"&gt;review of Chief's Bar&lt;/a&gt;. (You know, the one on Craig&amp;nbsp;&amp;amp;&amp;nbsp;Center with the fire helmet on the sign.) WOW.&amp;nbsp;Sounds like a rough place...</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:nolacoaster:118174</id>
    <link rel="alternate" type="text/html" href="http://nolacoaster.livejournal.com/118174.html"/>
    <link rel="self" type="text/xml" href="http://nolacoaster.livejournal.com/data/atom/?itemid=118174"/>
    <title>Southwest</title>
    <published>2009-09-09T16:57:16Z</published>
    <updated>2009-09-09T16:57:16Z</updated>
    <category term="planes"/>
    <content type="html">Remember when the old Southwest planes had &lt;a href="http://www.airliners.net/photo/Southwest-Airlines/Boeing-737-5H4/0408836/&amp;amp;sid=4f2fb7e93cb05cc17957e34f342d9748"&gt;face-to-face seats&lt;/a&gt;?&amp;nbsp;I used to try to convince my mom that we should sit back there, because I thought it was so cool, and since Southwest never had assigned seats. Today I can't imagine a more horrible airline experience...</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:nolacoaster:117999</id>
    <link rel="alternate" type="text/html" href="http://nolacoaster.livejournal.com/117999.html"/>
    <link rel="self" type="text/xml" href="http://nolacoaster.livejournal.com/data/atom/?itemid=117999"/>
    <title>Cool Place: Round Corner Cantina</title>
    <published>2009-08-30T20:48:46Z</published>
    <updated>2009-08-30T20:48:46Z</updated>
    <category term="pittsburgh"/>
    <category term="bar"/>
    <content type="html">Hey guys. Last night I went to a cool bar called the Round Corner Cantina.&amp;nbsp;It in Lawrenceville, approximately &lt;a href="http://maps.google.com/maps?ie=UTF8&amp;amp;q=3720+Butler+St&amp;amp;near=Pittsburgh,+PA&amp;amp;fb=1&amp;amp;split=1&amp;amp;gl=us&amp;amp;cid=0,0,13430742212377104095&amp;amp;ei=9eSaSv6RIYrslAeRv8imBQ&amp;amp;ll=40.466698,-79.96438&amp;amp;spn=0,359.999129&amp;amp;t=h&amp;amp;z=21&amp;amp;iwloc=A&amp;amp;layer=c&amp;amp;cbll=40.466837,-79.964308&amp;amp;panoid=aVFQDnzx0dbecxDPrmptDg&amp;amp;cbp=12,158.49,,0,-2.96"&gt;here&lt;/a&gt;, and if you've been to the up-and-coming hip part of Butler street then you've probably even been really nearby.&amp;nbsp;&amp;nbsp;Anyway, the point is that you should check it out. It's pretty hip. The inside bar has great ambience, &amp;amp;&amp;nbsp;a cool bartending staff. The backyard area is big &amp;amp; fun &amp;amp;&amp;nbsp;absolutely perfect with the weather last night. And finally they have a reasonably cool selection of drinks at decent prices.&amp;nbsp;For e.g., I had the Tijuana Sling, a Taquilla-based drink with ginger ale &amp;amp;&amp;nbsp;some other fruity stuff. &lt;strong&gt;Highly recommended&lt;/strong&gt;.</content>
  </entry>
</feed>
