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

<channel>
	<title>Neon Tapir</title>
	<atom:link href="http://neontapir.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://neontapir.wordpress.com</link>
	<description>Casting His Eerie Glow Upon the Masses</description>
	<lastBuildDate>Fri, 31 Jul 2009 04:01:34 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='neontapir.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/f932120fee9b099ef14e3a4ef816f0c9?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Neon Tapir</title>
		<link>http://neontapir.wordpress.com</link>
	</image>
			<item>
		<title>Review: Porco Rosso (and 100th Post)</title>
		<link>http://neontapir.wordpress.com/2009/07/30/review-porco-rosso/</link>
		<comments>http://neontapir.wordpress.com/2009/07/30/review-porco-rosso/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 03:29:37 +0000</pubDate>
		<dc:creator>neontapir</dc:creator>
				<category><![CDATA[review]]></category>
		<category><![CDATA[anime]]></category>
		<category><![CDATA[film]]></category>
		<category><![CDATA[miyazki]]></category>
		<category><![CDATA[movie]]></category>
		<category><![CDATA[porco rosso]]></category>
		<category><![CDATA[retrospective]]></category>
		<category><![CDATA[rpg]]></category>
		<category><![CDATA[SotC]]></category>
		<category><![CDATA[spirit of the century]]></category>

		<guid isPermaLink="false">http://neontapir.wordpress.com/?p=366</guid>
		<description><![CDATA[In a previous review of Miyazaki films, I mentioned I hadn&#8217;t caught a couple. 
Last week, Netflix delivered Porco Rosso. I enjoyed it a lot! The kids did too. 
What impressed me most about Porco Rosso wasn&#8217;t the plot or the telling of the story, both of which were very familiar after having watched the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neontapir.wordpress.com&blog=1203210&post=366&subd=neontapir&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>In a <a href="http://neontapir.wordpress.com/2009/04/01/on-miyazaki/">previous review of Miyazaki films</a>, I mentioned I hadn&#8217;t caught a couple. </p>
<p>Last week, Netflix delivered <em>Porco Rosso</em>. I enjoyed it a lot! The kids did too. </p>
<p>What impressed me most about <em>Porco Rosso</em> wasn&#8217;t the plot or the telling of the story, both of which were very familiar after having watched the others. Mr. Piccolo, whose family helped repair Porco&#8217;s plane, reminded me strongly of the Boiler Man from <em>Spirited Away</em>, for example. </p>
<p>As I watched the film, I kept thinking how it would make a wonderful backdrop for a Spirit of the Century campaign! The setting reminds me of the Xbox game Crimson Skies, a nation of islands connected by plane and zepplin. The characters are pure pulp. Porco would make an excellent Centurion, a Superb pilot. Gina, the restaurant owner with Support Rapport and Great Contacting. And so on.</p>
<hr width="50%" />
<p>In a side note, this is my 100th post. The blog has been a pleasure. It always amazes me to see what posts people are drawn to. </p>
<p>Some posts of note have been:</p>
<ul>
<li><a href="http://neontapir.wordpress.com/2007/08/01/spirit-of-the-century-gm-first-session-impressions/">Spirit of the Century first session impressions</a> as well as one about Spirit of the &#8216;Verse, my <em>Firefly</em> adaptation
<li><a href="http://neontapir.wordpress.com/2009/03/05/iphone-app-mini-reviews/">iPhone application mini-reviews</a>
<li><a href="http://neontapir.wordpress.com/2008/05/05/what-if-edison-hadnt-invented-the-light-bulb/">What if Edison hadn&#8217;t invented the light bulb?</a>
<li><a href="http://neontapir.wordpress.com/2008/01/31/kata-2-my-solution/">my answers to a couple Code Katas</a>
<li><a href="http://neontapir.wordpress.com/2009/02/24/starteam-install-woes/">a workaround for a common StarTeam 2008 Cross-Client startup issue</a>
</ul>
<p>As you can see, my readers are a diverse bunch. Part of me want to focus the blog on a particular subject, but no one subject dominates my readership.</p>
<p>Any requests? What would you like to see in the next 100 posts?</p>
 Tagged: anime, film, miyazki, movie, porco rosso, retrospective, review, rpg, SotC, spirit of the century <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/neontapir.wordpress.com/366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/neontapir.wordpress.com/366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/neontapir.wordpress.com/366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/neontapir.wordpress.com/366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/neontapir.wordpress.com/366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/neontapir.wordpress.com/366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/neontapir.wordpress.com/366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/neontapir.wordpress.com/366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/neontapir.wordpress.com/366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/neontapir.wordpress.com/366/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neontapir.wordpress.com&blog=1203210&post=366&subd=neontapir&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://neontapir.wordpress.com/2009/07/30/review-porco-rosso/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f8c06aafa0c5149e3ab1997802f2be7d?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">neontapir</media:title>
		</media:content>
	</item>
		<item>
		<title>First class</title>
		<link>http://neontapir.wordpress.com/2009/07/16/first-class/</link>
		<comments>http://neontapir.wordpress.com/2009/07/16/first-class/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 06:47:46 +0000</pubDate>
		<dc:creator>neontapir</dc:creator>
				<category><![CDATA[TKD]]></category>
		<category><![CDATA[breaking]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[grass]]></category>
		<category><![CDATA[hill]]></category>
		<category><![CDATA[instructor]]></category>
		<category><![CDATA[mirrors]]></category>
		<category><![CDATA[step sparring]]></category>

		<guid isPermaLink="false">http://neontapir.wordpress.com/?p=361</guid>
		<description><![CDATA[Last week, the City saw fit to hire me as a taekwon-do instructor. Tonight was my first class teaching.

I prepared by writing a matrix of all the colored belt moves, organized by type. Kicks got subdivided into kicks that take one stance length to perform (standing and mid-air kicks), and ones that take two (stepping, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neontapir.wordpress.com&blog=1203210&post=361&subd=neontapir&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Last week, the City saw fit to hire me as a taekwon-do instructor. Tonight was my first class teaching.<br />
<span id="more-361"></span><br />
I prepared by writing a matrix of all the colored belt moves, organized by type. Kicks got subdivided into kicks that take one stance length to perform (standing and mid-air kicks), and ones that take two (stepping, skipping, and jumping kicks). I also read through my USTF Class C Instructor&#8217;s certification class notes, hoping to glean some wisdom.</p>
<p>Class was held tonight in an alternate facility because there is an art class using our normal room. We often end up there when our normal room isn&#8217;t available. It&#8217;s not ideal for taekwon-do. The ceilings are short; I&#8217;d guess eight feet tall. This precludes jump kicks, considering our taller students have to be careful during warm-ups not to scrape the ceiling while rotating their arms over their heads. The back half of the room is carpeted, making sliding and turning in place difficult. And, it has no clock, which makes time management challenging.</p>
<p>Rather than lament my fate, I asked myself what redeeming features the room had. There is one: full-length mirrors on one side of the room. I vowed to make them part of my lesson plan.</p>
<p>Minutes before class, I thought I was in luck, as we had only eight students. However, another half dozen or so came in at the last minute. The room is cozy, being barely wide enough to stand in rows of three.</p>
<p>It was strange calling the class to line up and having our head instructor standing in the senior student position, with our assistant instructor next to him! Both of them are second-degree black belts. I&#8217;m actually the 4th highest member of my class, though the gap is less pronounced with my immediate senior, who is a junior and got his black belt just a few months before I did.</p>
<p>I needed a little assistance with the opening ceremony, as I didn&#8217;t know my role as instructor very well. I loosened up the class a little with a joke during announcements, saying that in honor of the 40th anniversary of the first man on the moon, our school director was making a special trip to Colorado to guest teach the class. She is coming, of course, and we&#8217;re excited to see her again. We all laughed at the thought of the moon landing triggering her trip, and I said I wasn&#8217;t sure there was a connection. Our head instructor found one: she lives in Florida near Cape Canaveral. There you go! </p>
<p>I warmed up class, which I&#8217;ve done many times before. I then divided the class in two. The seniors got to practice in front of the mirror, honing the techniques they use to break at their ranks. The juniors were in the back with our assistant instructor working on kicks.</p>
<p>I floated between the two groups, making sidebar comments to students who needed some extra assistance with stances or were beginning to be distracted. So far, so good. Again, it felt very odd calling the class to halt to switch stations!</p>
<p>The seniors went to the back, where our head instructor and I worked on breaking. Unlike last time, most of the students made their breaks! The juniors went to the front and started using the mirrors.</p>
<p><strong>Trouble in paradise</strong></p>
<p>As we rotated through the senior students, first performing kicks and strikes against focus pads and then on boards, one of the rec center employees came in and explained that they&#8217;d double booked our room for the last 15 minutes of class. They wondered if we could pull the divider and use one half of the room. The head instructor deferred to me. I said sure, we can make that work.</p>
<p>We continued and then the facility manager came in a few moments later. Turns out the group that had reserved the room was 50-100 strong! So they asked pretty please if we could finish class outside. I acquiesced.</p>
<p>We hurried a little through the breaking, and even got all the juniors a chance to try to break a board before I had the class adjourn outside. The best place to practice is in front of the facility, which is a gentle hill but the grass is soft. </p>
<p>I had the class line up with their backs to the sun and perform some step sparring drills. We have two that are performed alone. Then I had the first and third rows face the row behind them and do the drills with a partner. Afterward, I asked the senior students to begin working on step sparring at their level. </p>
<p>Curiously, the two students that had the most trouble were my two youngest. My son couldn&#8217;t understand what my daughter was doing, and he could barely hold back the tears of frustration. I suggested to him that he let his sister, who outranks him by quite a bit, do her thing and he might learn something. I ended up having to partner with her for a round to show him what was expected of him. After that, he was better.</p>
<p>The head instructor thought it was much later than it was, but I&#8217;d been keeping track of the time with my phone. We finished class on-time in the traditional closing ceremony. I made the same mistake in the closing ceremony as the opening one, but I don&#8217;t think anyone really noticed. I never ended up using the matrix I made, but I know it will be valuable going forward.</p>
<p>Afterward, the head instructor said I did a great job, and the assistant instructor heartily agreed. He said the class would be in good hands while a contingent from our gym go to train and vacation in Florida next month. All in all, I think it went rather well!</p>
 Tagged: breaking, class, grass, hill, instructor, mirrors, step sparring, TKD <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/neontapir.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/neontapir.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/neontapir.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/neontapir.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/neontapir.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/neontapir.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/neontapir.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/neontapir.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/neontapir.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/neontapir.wordpress.com/361/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neontapir.wordpress.com&blog=1203210&post=361&subd=neontapir&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://neontapir.wordpress.com/2009/07/16/first-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f8c06aafa0c5149e3ab1997802f2be7d?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">neontapir</media:title>
		</media:content>
	</item>
		<item>
		<title>USS Ayrton Session 2: Bringing &#8216;Er Home</title>
		<link>http://neontapir.wordpress.com/2009/07/16/uss-ayrton-session-2-bringing-er-home/</link>
		<comments>http://neontapir.wordpress.com/2009/07/16/uss-ayrton-session-2-bringing-er-home/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 06:01:55 +0000</pubDate>
		<dc:creator>neontapir</dc:creator>
				<category><![CDATA[rpg]]></category>
		<category><![CDATA[all your base]]></category>
		<category><![CDATA[ayrton]]></category>
		<category><![CDATA[engineer]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[klingon]]></category>
		<category><![CDATA[laziest men on mars]]></category>
		<category><![CDATA[lego]]></category>
		<category><![CDATA[pirates]]></category>
		<category><![CDATA[prop]]></category>
		<category><![CDATA[session]]></category>
		<category><![CDATA[vulcan]]></category>
		<category><![CDATA[write-up]]></category>

		<guid isPermaLink="false">http://neontapir.wordpress.com/?p=348</guid>
		<description><![CDATA[My oldest son has joined the crew as a lycanthropic species. We&#8217;re still working on his stats. He&#8217;s an engineer named W&#8217;an.
The kids love the concept of LARP, so that&#8217;s what it became. We didn&#8217;t get a lot accomplished in the session. Honestly, that&#8217;s okay &#8212; we had a great time, and that&#8217;s what counts!
We [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neontapir.wordpress.com&blog=1203210&post=348&subd=neontapir&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>My oldest son has joined the crew as a lycanthropic species. We&#8217;re still working on his stats. He&#8217;s an engineer named W&#8217;an.</p>
<p>The kids love the concept of LARP, so that&#8217;s what it became. We didn&#8217;t get a lot accomplished in the session. Honestly, that&#8217;s okay &#8212; we had a great time, and that&#8217;s what counts!</p>
<p>We left off <a href="http://neontapir.wordpress.com/2009/07/01/uss-ayrton-session-1-on-the-goodnight-loving-trail/">last session</a> with a crew exchange to prevent trickery. The three player characters were the team Starfleet selected to travel aboard the Goodnight-Loving. W&#8217;an slowly gained the trust of the pirates as things started mysteriously malfunctioning. </p>
<p>Gorm the Klingon tried to bully the pirates into leaving them alone so they could roam the ship freely &#8212; no go. Finally, W&#8217;an engineered a radiation leak in the cargo container they suspected carried the planet buster bomb and convinced the pirate left in charge to jettison it in an escape pod. The Ayrton tractored it into their cargo bay. Mission accomplished!</p>
<p>Our Vulcan XO/medic Vanisha didn&#8217;t have much to do, and my daughter and I talked afterward about creating dramatic situations. I suggested, for example, that she could engage the other characters in some leading dialogue. Or that she improvise something similar to the way my oldest did with the old freighter&#8217;s engines.</p>
<p>Things really got fun when I suggested to my son that he dig out some <a href="http://neontapir.wordpress.com/2009/07/15/lego-star-trek-props/">props I&#8217;d made out of LEGOs</a> in my youth. They really helped the kids get into character!</p>
<p>One portion of play was particularly funny, in which W&#8217;an called the captain of the Ayrton on a LEGO communicator and said, &#8220;Someone set us up the bomb!&#8221; I whipped my head around and said, &#8220;What you say?&#8221; The four of us immediately riffed into Zero Wing and recited the entirety of ALL YOUR BASE ARE BELONG TO US, which the kids know from the Laziest Men on Mars song. It took us several minutes to stop laughing and get back to roleplaying!</p>
<p>The money moment of the session happened when my daughter said, &#8220;Hey guys, instead of sitting on our butts all day, we could roleplay <i>Star Trek</i>!&#8221; </p>
<p>The defense rests.</p>
 Tagged: all your base, ayrton, engineer, game, klingon, laziest men on mars, lego, pirates, prop, rpg, session, vulcan, write-up <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/neontapir.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/neontapir.wordpress.com/348/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/neontapir.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/neontapir.wordpress.com/348/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/neontapir.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/neontapir.wordpress.com/348/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/neontapir.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/neontapir.wordpress.com/348/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/neontapir.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/neontapir.wordpress.com/348/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neontapir.wordpress.com&blog=1203210&post=348&subd=neontapir&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://neontapir.wordpress.com/2009/07/16/uss-ayrton-session-2-bringing-er-home/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f8c06aafa0c5149e3ab1997802f2be7d?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">neontapir</media:title>
		</media:content>
	</item>
		<item>
		<title>LEGO Star Trek props</title>
		<link>http://neontapir.wordpress.com/2009/07/15/lego-star-trek-props/</link>
		<comments>http://neontapir.wordpress.com/2009/07/15/lego-star-trek-props/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 05:54:45 +0000</pubDate>
		<dc:creator>neontapir</dc:creator>
				<category><![CDATA[rpg]]></category>
		<category><![CDATA[vignette]]></category>
		<category><![CDATA[duct tape]]></category>
		<category><![CDATA[electrical tape]]></category>
		<category><![CDATA[lego]]></category>
		<category><![CDATA[phaser]]></category>
		<category><![CDATA[star trek]]></category>
		<category><![CDATA[toy]]></category>
		<category><![CDATA[tricorder]]></category>
		<category><![CDATA[vcr]]></category>
		<category><![CDATA[weapon]]></category>

		<guid isPermaLink="false">http://neontapir.wordpress.com/?p=350</guid>
		<description><![CDATA[

When I was a lad, I made some Star Trek props out of LEGOs. I hadn&#8217;t thought much of them until this evening, when I was doing some LARPing with my kids.
I carefully looked at the Star Trek Technical Manual and any other references I could find to get exact dimensions for these items. For [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neontapir.wordpress.com&blog=1203210&post=350&subd=neontapir&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><div style="float:right;margin:1em;"><a href="http://www.flickr.com/photos/tangentier/3725273239/"><img src="http://farm3.static.flickr.com/2498/3725273239_990816dfba.jpg" height="150px" alt="LEGO Tricorders" /></a><br /><a href="http://www.flickr.com/photos/tangentier/3725273187/"><img src="http://farm3.static.flickr.com/2621/3725273187_1bc8ec7eb3.jpg" height="150px" alt="LEGO Phaser" /></a>
</div>
<p>When I was a lad, I made some <i>Star Trek</i> props out of LEGOs. I hadn&#8217;t thought much of them until this evening, when I was doing some <a href="http://neontapir.wordpress.com/2009/07/15/uss-ayrton-session-2-bringing-er-home">LARPing with my kids</a>.</p>
<p>I carefully looked at the Star Trek Technical Manual and any other references I could find to get exact dimensions for these items. For the <i>Next Generation</i> items, I had to rely on magazines and paused stills from my VCR to get them right.</p>
<p>Being LEGOs, they tended to disintegrate just when things were getting interesting. So, I wrapped them tight with duct and electrical tape. Considering they have been around for 25 years or so, they have held up remarkably well! As you can see in the phaser picture, the duct tape is a little the worse for wear; stretched out in places, falling off in others. I think it&#8217;s adorable that the kids want to re-wrap them!</p>
<p>I also made a couple original props. I&#8217;ve uploaded a picture of the Type V Phaser I designed for black ops to Flickr. Seeing those props put to good use brought back some wonderful memories.</p>
 Tagged: duct tape, electrical tape, lego, phaser, star trek, toy, tricorder, vcr, weapon <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/neontapir.wordpress.com/350/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/neontapir.wordpress.com/350/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/neontapir.wordpress.com/350/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/neontapir.wordpress.com/350/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/neontapir.wordpress.com/350/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/neontapir.wordpress.com/350/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/neontapir.wordpress.com/350/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/neontapir.wordpress.com/350/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/neontapir.wordpress.com/350/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/neontapir.wordpress.com/350/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neontapir.wordpress.com&blog=1203210&post=350&subd=neontapir&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://neontapir.wordpress.com/2009/07/15/lego-star-trek-props/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f8c06aafa0c5149e3ab1997802f2be7d?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">neontapir</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2498/3725273239_990816dfba.jpg" medium="image">
			<media:title type="html">LEGO Tricorders</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2621/3725273187_1bc8ec7eb3.jpg" medium="image">
			<media:title type="html">LEGO Phaser</media:title>
		</media:content>
	</item>
		<item>
		<title>iPhone application mini-reviews II</title>
		<link>http://neontapir.wordpress.com/2009/07/14/iphone-application-mini-reviews-ii/</link>
		<comments>http://neontapir.wordpress.com/2009/07/14/iphone-application-mini-reviews-ii/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 06:04:47 +0000</pubDate>
		<dc:creator>neontapir</dc:creator>
				<category><![CDATA[review]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[archers]]></category>
		<category><![CDATA[distant suns]]></category>
		<category><![CDATA[flightcontrol]]></category>
		<category><![CDATA[geocaching]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[memiary]]></category>
		<category><![CDATA[mywireless]]></category>
		<category><![CDATA[pocket tanks]]></category>
		<category><![CDATA[pocketmoney]]></category>
		<category><![CDATA[scramble]]></category>
		<category><![CDATA[tweetdeck]]></category>

		<guid isPermaLink="false">http://neontapir.wordpress.com/?p=344</guid>
		<description><![CDATA[Since it&#8217;s been a few months since my first post in this series, I felt it was time to revisit this. 
Items in bold are new. Items in strike-through are history. Due to some peculiarities with my laptop, I don&#8217;t have iTunes installed, or I would link directly to these apps. Do check them out!
Everyday

Phone, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neontapir.wordpress.com&blog=1203210&post=344&subd=neontapir&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Since it&#8217;s been a few months since my <a href="http://neontapir.wordpress.com/2009/03/05/iphone-app-mini-reviews/">first post in this series</a>, I felt it was time to revisit this. </p>
<p>Items in <b>bold</b> are new. Items in <s>strike-through</s> are history. Due to some peculiarities with my laptop, I don&#8217;t have iTunes installed, or I would link directly to these apps. Do check them out!</p>
<p><strong>Everyday</strong></p>
<ul>
<li>Phone, SMS, Calendar, Mail, Safari, Facebook
<li><b>TweetDeck</b>: I find TweetDeck to be more intuitive than TwitterFon.
<li><b>Memiary</b>: A lightweight journaling utility, it links to their web site. Entries are private and only visible when you are logged in.
<li><b>PocketMoney</b>: A manual money tracking application. I don&#8217;t having my account information exposed online a la Quicken or Mint, so this fits the bill nicely. Maybe when I can use stronger security measures.
<li><s>TwitterFon</s>
</ul>
<p><strong>Frequent</strong></p>
<ul>
<li><b>FlightControl</b>: I love this game of landing planes. It&#8217;s just the right balance of whimsy and challenge.
<li><b>Archers</b>: My kids&#8217; favorite game. Calculate the correct azimuth and pull to hit your opponent in a duel.
<li><b>Pocket Tanks</b>: Similar to Scorched Earth, it often alleviates the boredom of waiting at events
<li><b>Scramble</b>: It has replaced Moxie as my iPhone word game of choice. Its dictionary is too permissive for my taste, but better too many words than too few.
<li>Contacts, iPod, Maps, gFlash+
<li><i>Upgraded from Infrequent</i>: WordPress
</ul>
<p><strong>Infrequent but Handy</strong></p>
<ul>
<li><b>MyWireless by AT&amp;T</b>: Essential for managing my family&#8217;s cell phone accounts
<li><b>Geocaching</b>: I go geocaching with the kids on occasion; it&#8217;s worth the $10.
<li><b>Distant Suns Lite</b>: I stargaze with the kids some too. The best of breed free astronomy app, though I will probably upgrade soon.
<li><b>AP Mobile</b> and <b>SportsTap</b>: Used when I want to look up some news item I overheard
<li><b>DarkSlide</b>: I use it as a gateway to my Flickr account
<li><b>Dictionary</b>, <b>Eng &lt;-&gt; Ger</b>, <b>DianHua</b>: nice to have access to a dictionary
<li><b>Be Extra! &#8211; The Extraordinaries</b>: Fritter your time away cataloging photos for museums
<li><b>9-in-1 Toolbox</b>: Jack of 9 trades, master of none
<li>Weather, Lose It, Diceshaker / Dice Bag, iChess, Flashlight
<li><i>Downgraded from Frequent</i>: MotionX GPS Lite, AroundMe, SnapTell, midomi, Ocarina, iStethoscope
<li><s>iHandyLevel, Lightsaber, Mancala FS5, Dialer (Melodis)</s>
</ul>
<p><strong>Also-Rans</strong></p>
<ul>
<li>Moxie: An enjoyable word game, but I find the dictionary&#8217;s lack of words frustrating
<li>Google: Not enough bang for my buck, I find myself going back to Safari
</ul>
 Tagged: app, archers, distant suns, flightcontrol, geocaching, iphone, memiary, mywireless, pocket tanks, pocketmoney, scramble, tweetdeck <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/neontapir.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/neontapir.wordpress.com/344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/neontapir.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/neontapir.wordpress.com/344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/neontapir.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/neontapir.wordpress.com/344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/neontapir.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/neontapir.wordpress.com/344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/neontapir.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/neontapir.wordpress.com/344/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neontapir.wordpress.com&blog=1203210&post=344&subd=neontapir&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://neontapir.wordpress.com/2009/07/14/iphone-application-mini-reviews-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f8c06aafa0c5149e3ab1997802f2be7d?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">neontapir</media:title>
		</media:content>
	</item>
		<item>
		<title>On Netflix&#8217;s &#8220;Watch Instantly&#8221; Streaming Feature</title>
		<link>http://neontapir.wordpress.com/2009/07/03/on-netflixs-watch-instantly-streaming-feature/</link>
		<comments>http://neontapir.wordpress.com/2009/07/03/on-netflixs-watch-instantly-streaming-feature/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 07:02:31 +0000</pubDate>
		<dc:creator>neontapir</dc:creator>
				<category><![CDATA[review]]></category>
		<category><![CDATA[netflix]]></category>
		<category><![CDATA[set-top]]></category>
		<category><![CDATA[streaming]]></category>

		<guid isPermaLink="false">http://neontapir.wordpress.com/2009/07/03/on-netflixs-watch-instantly-streaming-feature/</guid>
		<description><![CDATA[I just watched my first Netflix streaming movie. It was &#8220;Species&#8221;, for the record &#8212; I picked it because it was the first one presented I hadn&#8217;t seen that I had a vague interest in.
Species itself was mildly interesting, but I was more curious about the experience. I found the Silverlight client for Firefox 3.5 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neontapir.wordpress.com&blog=1203210&post=342&subd=neontapir&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I just watched my first Netflix streaming movie. It was &#8220;Species&#8221;, for the record &#8212; I picked it because it was the first one presented I hadn&#8217;t seen that I had a vague interest in.</p>
<p>Species itself was mildly interesting, but I was more curious about the experience. I found the Silverlight client for Firefox 3.5 to work extremely well. The movie stopped in the middle with a &#8220;can&#8217;t stream this right now&#8221; message. I clicked refresh, and much to my delight, it not only reloaded the movie but kept my place!</p>
<p>This was light-years ahead of the experience I had watching a Comcast On-Demand movie a month ago, which I had to restart no less than ten times because of freezes.</p>
<p>Having done this makes me interested in other players in this space, as well as a set-top box. Any recommendations?</p>
 Tagged: netflix, set-top, streaming <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/neontapir.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/neontapir.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/neontapir.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/neontapir.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/neontapir.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/neontapir.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/neontapir.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/neontapir.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/neontapir.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/neontapir.wordpress.com/342/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neontapir.wordpress.com&blog=1203210&post=342&subd=neontapir&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://neontapir.wordpress.com/2009/07/03/on-netflixs-watch-instantly-streaming-feature/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f8c06aafa0c5149e3ab1997802f2be7d?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">neontapir</media:title>
		</media:content>
	</item>
		<item>
		<title>USS Ayrton session 1: On the Goodnight-Loving Trail</title>
		<link>http://neontapir.wordpress.com/2009/07/01/uss-ayrton-session-1-on-the-goodnight-loving-trail/</link>
		<comments>http://neontapir.wordpress.com/2009/07/01/uss-ayrton-session-1-on-the-goodnight-loving-trail/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 04:42:34 +0000</pubDate>
		<dc:creator>neontapir</dc:creator>
				<category><![CDATA[rpg]]></category>
		<category><![CDATA[airlock]]></category>
		<category><![CDATA[andorian]]></category>
		<category><![CDATA[ayrton]]></category>
		<category><![CDATA[klingon]]></category>
		<category><![CDATA[LARP]]></category>
		<category><![CDATA[pirates]]></category>
		<category><![CDATA[session]]></category>
		<category><![CDATA[terrorists]]></category>
		<category><![CDATA[trek]]></category>
		<category><![CDATA[vulcan]]></category>
		<category><![CDATA[wager]]></category>

		<guid isPermaLink="false">http://neontapir.wordpress.com/?p=340</guid>
		<description><![CDATA[The kids and I have played our first session of the USS Ayrton campaign.
This time, I&#8217;m setting back and letting the kids run with it. They are LARPing, which works for me. I spent a lot of my early roleplaying years LARPing situations, and I find it a useful tool for inexperienced roleplayers.
The game started [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neontapir.wordpress.com&blog=1203210&post=340&subd=neontapir&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>The kids and I have played our first session of the <a href="http://neontapir.wordpress.com/2009/06/03/my-new-nameless-savage-worlds-star-trek-campaign/">USS Ayrton</a> campaign.</p>
<p>This time, I&#8217;m setting back and letting the kids run with it. They are LARPing, which works for me. I spent a lot of my early roleplaying years LARPing situations, and I find it a useful tool for inexperienced roleplayers.</p>
<p>The game started yesterday with the same presentation as my old USS Endeavor campaign: there&#8217;s a merchant ship &#8212; the SS Goodnight-Loving &#8212; under attack en route to Spike IV and requesting help. </p>
<p>I resurrected my oldest Star Trek character, K&#8217;ron Tharel, to be the Captain of the USS Ayrton. He&#8217;s an Andorian, and he makes for an interesting counterpoint between the Klingon envoy Gorm and the Vulcan medic/XO Vanisha. We watched parts of &#8220;The Andorian Incident&#8221; episode in Enterprise Season 1, so they had some clue what Andorians were? The kids were incredulous. &#8220;An Andorian&#8217;s our Captain?!&#8221; I explained that the main Androian Shran and Captain Archer developed a friendship over the course of the series.</p>
<p>I asked the kids who they thought would be behind the attack. They said, it&#8217;s Andorian terrorists. They further said that the Goodnight-Loving was carrying a nuclear bomb that could destroy a planet. I edited it to a neutronic bomb, a &#8220;planet-buster&#8221;. </p>
<p>We left with Cmdr. Vanisha to make a recommendation how to approach the situation.</p>
<p>When we resumed tonight, I asked my daughter what she&#8217;d come up with. Her first plan was what I expected, be friends and ask why they did it. But she quickly came up with the idea of infiltrating the ship and trying to re-take it from the pirates (maybe terrorists) that had taken it.</p>
<p>My son quickly chimed in, stating he knew a Klingon merchant on the planet and could arrange passage on his vessel. They took a group of security and the Chief Engineer and headed out.</p>
<p>They beat the Goodnight-Loving to Spica IV, got on the ship, and intercepted the Goodnight-Loving. The pirate captain said he wasn&#8217;t interested in trading, but when Gorm offered Vanisha as a &#8220;Vulcan slave&#8221;, that got him mildly interested. The pirate captain wanted more. No antiques interested him, but when Gorm mentioned dice, the pirate captain was hooked. </p>
<p>My son and I decided we&#8217;d roll 2d6; the first to roll doubles won.</p>
<p>They docked their ships and played in the airlock. &#8220;No tricks.&#8221; The pirate captain quickly won the first game. Gorm upped the ante with the ship&#8217;s dilithium. The pirate captain won in record time. Finally, they agreed to wager their ships, sans cargo and crew. This time, after about a dozen rolls, Gorm was victorious!</p>
<p>They agreed to exchange two crew each to prevent deceit. Vanisha and a security specialist nicknamed Gunny went aboard the Goodnight-Loving; the captain gave them two bruisers named Jones and Duke. </p>
<p>Being a puzzle, the next scene should logically be either a fight or a chase. I choose chase &#8212; the pirate captain is going to bold with the Vulcan &#8220;slave&#8221; as his prize&#8230;</p>
 Tagged: airlock, andorian, ayrton, klingon, LARP, pirates, rpg, session, terrorists, trek, vulcan, wager <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/neontapir.wordpress.com/340/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/neontapir.wordpress.com/340/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/neontapir.wordpress.com/340/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/neontapir.wordpress.com/340/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/neontapir.wordpress.com/340/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/neontapir.wordpress.com/340/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/neontapir.wordpress.com/340/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/neontapir.wordpress.com/340/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/neontapir.wordpress.com/340/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/neontapir.wordpress.com/340/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neontapir.wordpress.com&blog=1203210&post=340&subd=neontapir&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://neontapir.wordpress.com/2009/07/01/uss-ayrton-session-1-on-the-goodnight-loving-trail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f8c06aafa0c5149e3ab1997802f2be7d?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">neontapir</media:title>
		</media:content>
	</item>
		<item>
		<title>Review: Dexter</title>
		<link>http://neontapir.wordpress.com/2009/06/30/review-dexter/</link>
		<comments>http://neontapir.wordpress.com/2009/06/30/review-dexter/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 06:53:33 +0000</pubDate>
		<dc:creator>neontapir</dc:creator>
				<category><![CDATA[review]]></category>
		<category><![CDATA[dexter]]></category>
		<category><![CDATA[justice]]></category>
		<category><![CDATA[moral ambiguity]]></category>
		<category><![CDATA[tv]]></category>
		<category><![CDATA[vigilante]]></category>

		<guid isPermaLink="false">http://neontapir.wordpress.com/?p=338</guid>
		<description><![CDATA[My co-worker turned me on to &#8220;Dexter&#8221;, the Showtime series. I&#8217;m neither a big fan of horror nor true crime, so I looked askance at it, but decided to give it a try after another esteemed work pal came in bleary-eyed from watching it all night. 
I was quite surprised at how much I grew [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neontapir.wordpress.com&blog=1203210&post=338&subd=neontapir&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>My co-worker turned me on to &#8220;Dexter&#8221;, the Showtime series. I&#8217;m neither a big fan of horror nor true crime, so I looked askance at it, but decided to give it a try after another esteemed work pal came in bleary-eyed from watching it all night. </p>
<p>I was quite surprised at how much I grew to like the show. By day, our protagonist Dexter Morgan is a blood spatter analyst for the Miami police. By night, he is a cold-blooded serial killer.</p>
<p>Not having an internal compass to speak of, Dexter relies the Code of Harry to guide him, which was instilled into him by his adoptive father, the now-deceased homicide detective Harry Morgan. Harry taught Dexter only to prey upon the most heinous villains in society, thereby moulding Dexter into a ritualistic and gruesome vigilante who knows how to cover his tracks.</p>
<p>The only family Dexter knows is his sister Deborah, who followed in her father&#8217;s footsteps and became a cop. She and the rest of Miami are unaware of Dexter&#8217;s brand of clandestine justice.</p>
<p>To blend in, Dexter spends a lot of time faking emotions, for he doesn&#8217;t feel much on his own. He dates a woman named Rita, who is great for him because she has emotional wounds of her own. I found myself become immersed in the relationship arc between Dexter and Rita, though the other characters are compelling in their own rite.</p>
<p>The series grapples with the moral question of whether Dexter is a good person doing bad things, or a bad person doing good things. Dexter is portrayed as morally ambiguous, and the subplots reinforce this theme. It&#8217;s hard to express an opinion without spoilers, but while I want to believe in the good in Dexter&#8217;s heart, he does terrible things over the course of the series that give me pause. </p>
<p>Fair warning: Dexter is violent and very much adult in nature, but I did not find it gratuitously so. Season 1 was riveting; Season 2 was less so for me but still well worth watching. I&#8217;m eagerly awaiting Season 3 on DVD.</p>
 Tagged: dexter, justice, moral ambiguity, review, tv, vigilante <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/neontapir.wordpress.com/338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/neontapir.wordpress.com/338/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/neontapir.wordpress.com/338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/neontapir.wordpress.com/338/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/neontapir.wordpress.com/338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/neontapir.wordpress.com/338/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/neontapir.wordpress.com/338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/neontapir.wordpress.com/338/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/neontapir.wordpress.com/338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/neontapir.wordpress.com/338/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neontapir.wordpress.com&blog=1203210&post=338&subd=neontapir&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://neontapir.wordpress.com/2009/06/30/review-dexter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f8c06aafa0c5149e3ab1997802f2be7d?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">neontapir</media:title>
		</media:content>
	</item>
		<item>
		<title>IronRuby script engine in C#</title>
		<link>http://neontapir.wordpress.com/2009/06/29/ironruby-script-engine-in-c/</link>
		<comments>http://neontapir.wordpress.com/2009/06/29/ironruby-script-engine-in-c/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 17:40:32 +0000</pubDate>
		<dc:creator>neontapir</dc:creator>
				<category><![CDATA[professional]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[engine]]></category>
		<category><![CDATA[extensions]]></category>
		<category><![CDATA[ironruby]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://neontapir.wordpress.com/?p=336</guid>
		<description><![CDATA[This post talks about the IronRuby engine we built. Our application has a requirement that certain elements of program logic must be able to be changed without a deployment. The application&#8217;s initial architecture involved compiling C# functions on the fly, but it ran into memory pining issues after several hundred function sets had been loaded, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neontapir.wordpress.com&blog=1203210&post=336&subd=neontapir&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>This post talks about the IronRuby engine we built. Our application has a requirement that certain elements of program logic must be able to be changed without a deployment. The application&#8217;s initial architecture involved compiling C# functions on the fly, but it ran into memory pining issues after several hundred function sets had been loaded, which brought the application down every so often. Our team was charged with the task of preventing this situation while maintaining the feature. </p>
<p>We debated two approaches. We chose to use an interpreted script solution over a plug-in architecture because interpreted scripts are ideally suited to oft-changing code. Also, the logic is currently stored in XML files, and Ruby requires less character escaping than C# does when represented in XML. IronRuby won over IronPython because our team had a little experience with Ruby and none with Python.</p>
<p>The heart of the solution is a C# class called the IronRubyScriptEngine. In order to play along, you&#8217;ll need to include the following assemblies from the IronRuby 0.5.0 distribution:</p>
<div style="background:white none repeat scroll 0 0;font-family:Monaco;font-size:9pt;color:black;">
<p style="margin:0;"><span style="color:blue;">using</span> IronRuby;</p>
<p style="margin:0;"><span style="color:blue;">using</span> IronRuby.Builtins;</p>
<p style="margin:0;"><span style="color:blue;">using</span> Microsoft.Scripting.Hosting;</p>
</p></div>
<p>Here&#8217;s the engine&#8217;s constructor:</p>
<div style="background:white none repeat scroll 0 0;font-family:Monaco;font-size:9pt;color:black;">
<p style="margin:0;"><span style="color:blue;">public</span> IronRubyScriptEngine()</p>
<p style="margin:0;">{</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; LoadRequiredAssemblies();</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; _runtime = <span style="color:rgb(43,145,175);">Ruby</span>.CreateRuntime();</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; _engine = <span style="color:rgb(43,145,175);">Ruby</span>.GetEngine(_runtime);&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; </p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; ResetScope();</p>
<p style="margin:0;">}</p>
<p style="margin:0;">
<p style="margin:0;"><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;summary&gt;</span></p>
<p style="margin:0;"><span style="color:gray;">///</span><span style="color:green;"> We need the assembly loaded into memory before CreateRuntime() is called, so we force it here.<br />
</span></p>
<p style="margin:0;"><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;/summary&gt;</span></p>
<p style="margin:0;">
<p style="margin:0;"><span style="color:blue;">private</span> <span style="color:blue;">static</span> <span style="color:blue;">void</span> LoadRequiredAssemblies()</p>
<p style="margin:0;">{</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; <span style="color:rgb(43,145,175);">ClrString</span>.IsEmpty(<span style="background:rgb(255,255,128) none repeat scroll 0 0;color:rgb(163,21,21);">&#8220;&#8221;</span>);</p>
<p style="margin:0;">}</p>
<p style="margin:0;">
<p style="margin:0;"><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;summary&gt;</span></p>
<p style="margin:0;"><span style="color:gray;">///</span><span style="color:green;"> Resets the scope, allowing you to run the same script against multiple inputs.</span></p>
<p style="margin:0;"><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;/summary&gt;</span></p>
<p style="margin:0;"><span style="color:blue;">public</span> <span style="color:blue;">void</span> ResetScope()</p>
<p style="margin:0;">{</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; _scope = _engine.CreateScope();</p>
<p style="margin:0;">}</p>
</p></div>
<p>As you can see, creating an IronRuby engine in C# is very easy.</p>
<p>We pass parameters into our engine with a method called SetParameter. More on this in a moment.</p>
<div style="background:white none repeat scroll 0 0;font-family:Monaco;font-size:9pt;color:black;">
<p style="margin:0;"><span style="color:blue;">public</span> <span style="color:rgb(43,145,175);">IronRubyScriptEngine</span> SetParameter(<span style="color:blue;">string</span> parameterName, <span style="color:blue;">object</span> value)</p>
<p style="margin:0;">{</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; _scope.SetVariable(parameterName, value);</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; <span style="color:blue;">return</span> <span style="color:blue;">this</span>;</p>
<p style="margin:0;">}</p>
</p></div>
<p>The real work is done inside the Invoke method, which wraps a snippet of Ruby code in a Proc. It dynamically creates the correct input parameter syntax, interprets the snippet, then invokes the script with the values of the parameters. </p>
<div style="background:white none repeat scroll 0 0;font-family:Monaco;font-size:9pt;color:black;">
<p style="margin:0;"><span style="color:blue;">private</span> <span style="color:blue;">object</span> Invoke(<span style="color:blue;">string</span> script)</p>
<p style="margin:0;">{</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; <span style="color:blue;">var</span> variableNames = _scope.GetVariableNames();</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; <span style="color:blue;">string</span> expression = <span style="color:blue;">string</span>.Format(<span style="background:rgb(255,255,128) none repeat scroll 0 0;color:rgb(163,21,21);">&#8220;Proc.new {{ |{0}| {1} }}&#8221;</span>, variableNames.ToDelimitedString(<span style="background:rgb(255,255,128) none repeat scroll 0 0;color:rgb(163,21,21);">&#8220;, &#8220;</span>), script);</p>
<p style="margin:0;">&nbsp;&nbsp; </p>
<div style="background:white none repeat scroll 0 0;font-family:Monaco;font-size:9pt;color:black;">
<p style="margin:0;"><span style="color:rgb(43,145,175);">&nbsp;&nbsp;&nbsp; ScriptSource</span> source = _engine.CreateScriptSourceFromString(expression);</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; <span style="color:blue;">var</span> proc = (<span style="color:rgb(43,145,175);">Proc</span>) source.Execute();</p>
<p>&nbsp;&nbsp;&nbsp; <span style="color:rgb(43,145,175);">Proc</span> lambda = proc.ToLambda(); </div>
<p style="margin:0;">&nbsp;</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; <span style="color:blue;">object</span>[] scopeVariables = variableNames.Select(name =&gt; _scope.GetVariable(name)).ToArray();</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; <span style="color:blue;">return</span> lambda.Call(scopeVariables);</p>
<p style="margin:0;">}</p>
</div>
<p>Let&#8217;s say I have a Person class, and I want to determine if the person is happy. By using SetParameters, I can associate an object with a parameter name, so that if I write a snippet &#8220;bob.happy?&#8221;, the engine creates &#8220;Proc.new {{ |bob| bob.happy? }}&#8221; and when called, my Person class instance is passed in.</p>
<p>As most Ruby afficionadoes know, Procs and Lambdas differ in how they handle the return keyword. We chose Lambdas so that return exits the scope like it would in a C# method.</p>
<p>ToDelimitedString is a simple yet handy extension method on IEnumerable.</p>
<div style="background:white none repeat scroll 0 0;font-family:Monaco;font-size:9pt;color:black;">
<p style="margin:0;"></p>
<div style="background:white none repeat scroll 0 0;font-family:Monaco;font-size:9pt;color:black;">
<p style="margin:0;"><span style="color:blue;">public</span> <span style="color:blue;">static</span> <span style="color:blue;">string</span> ToDelimitedString&lt;T&gt;(<span style="color:blue;">this</span> <span style="color:rgb(43,145,175);">IEnumerable</span>&lt;T&gt; sequence, <span style="color:blue;">char</span> delimiter)</p>
<p style="margin:0;">{</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; <span style="color:blue;">return</span> DelimitValues(sequence, delimiter.ToString());</p>
<p style="margin:0;">}</p>
</p></div>
<p style="margin:0;"><span style="color:blue;">public</span> <span style="color:blue;">static</span> <span style="color:blue;">string</span> ToDelimitedString&lt;T&gt;(<span style="color:blue;">this</span> <span style="color:rgb(43,145,175);">IEnumerable</span>&lt;T&gt; sequence, <span style="color:blue;">string</span> delimiter)</p>
<p style="margin:0;">{</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; <span style="color:blue;">return</span> DelimitValues(sequence, delimiter);</p>
<p style="margin:0;">}</p>
<p style="margin:0;">&nbsp;</p>
<p style="margin:0;"><span style="color:blue;">private</span> <span style="color:blue;">static</span> <span style="color:blue;">string</span> DelimitValues&lt;T&gt;(<span style="color:rgb(43,145,175);">IEnumerable</span>&lt;T&gt; sequence, <span style="color:blue;">string</span> delimiter)</p>
<p style="margin:0;">{</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; <span style="color:blue;">string</span>[] values = sequence.Select(x =&gt; x.ToString()).ToArray();</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; <span style="color:blue;">return</span> <span style="color:blue;">string</span>.Join(delimiter, values);</p>
<p style="margin:0;">}</p>
</div>
<p>With this engine in place, it was easy to migrate our existing logic into Ruby functions. The final version of the engine includes script caching, so we don&#8217;t interpret the same function over and over. </p>
<p>As the migration proceeded, we decided to refactor some of the logic to re-use code, something that was difficult in the old architecture. In Ruby, it&#8217;s easy to extend a class. In IronRuby, you can certainly do that with CLR classes as well. However, the classes we needed to extend exist on the wrong side of a Remoting boundary. Extending an anonymous RemotingProxy of the class proved tough, so we chose to extend the object instead.</p>
<p>module FooExtensions<br />
&nbsp; def extended?<br />
&nbsp;&nbsp;&nbsp; true<br />
&nbsp; end<br />
end</p>
<p>In the snippet, we apply the extension with the following code:</p>
<p>require &#8216;FooExtensions.rb&#8217;<br />
myFoo.extend FooExtensions<br />
myFoo.extended?&nbsp; # returns true</p>
<p>Between the terseness of Ruby and re-use of code, we have much less code to maintain. Although the Ruby functions are slower than their C# counterparts, they are certainly performant enough for our scenario.</p>
<p>I hope this post has been interesting. Comments are welcome.</p>
 Tagged: C#, code, engine, extensions, ironruby, module, programming, script <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/neontapir.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/neontapir.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/neontapir.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/neontapir.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/neontapir.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/neontapir.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/neontapir.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/neontapir.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/neontapir.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/neontapir.wordpress.com/336/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neontapir.wordpress.com&blog=1203210&post=336&subd=neontapir&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://neontapir.wordpress.com/2009/06/29/ironruby-script-engine-in-c/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f8c06aafa0c5149e3ab1997802f2be7d?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">neontapir</media:title>
		</media:content>
	</item>
		<item>
		<title>Nothin&#8217; But .NET Denver</title>
		<link>http://neontapir.wordpress.com/2009/06/14/nothin-but-net-denver/</link>
		<comments>http://neontapir.wordpress.com/2009/06/14/nothin-but-net-denver/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 04:17:02 +0000</pubDate>
		<dc:creator>neontapir</dc:creator>
				<category><![CDATA[professional]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://neontapir.wordpress.com/?p=329</guid>
		<description><![CDATA[
JP Boodhoo brought his Nothin&#8217; But .NET class to Denver for the first time. My co-worker had taken the class last year and raved about it. It really improved his game, and we persuaded our company to send five of us to this one. 
It&#8217;s worth its weight in gold.
JP introduced fundamental programming design concepts, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neontapir.wordpress.com&blog=1203210&post=329&subd=neontapir&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><div style="float:right;margin:1em;"><a href="http://farm4.static.flickr.com/3658/3626362799_939f0d44f1.jpg"><img src="http://farm4.static.flickr.com/3658/3626362799_939f0d44f1.jpg" height="300px" alt="JP Boodhoo"></a></div>
<p><a href="http://www.jpboodhoo.com">JP Boodhoo</a> brought his Nothin&#8217; But .NET class to Denver for the first time. My co-worker had taken the class last year and raved about it. It really improved his game, and we persuaded our company to send five of us to this one. </p>
<p>It&#8217;s worth its weight in gold.</p>
<p>JP introduced fundamental programming design concepts, then had us work in small groups to complete challenges, working towards a goal of designing an application top-down with test-driven development. All of us learned that we did not understand some of these basic concepts as well as we should. JP opened my eyes to a whole new level of encapsulating and dividing code; it was like discovering that atoms are made up of smaller particles.</p>
<p>Don&#8217;t get me wrong: it&#8217;s a ton of work. On Thursday and Friday, we met for breakfast at 8:30 and coded til 4 in the morning &#8212; that&#8217;s 15-20 hours a day. Especially as fatigue set in, the challenges become so hard that we as a class struggled to complete them. Some days we ate at the same boring fast food restaurants again and again so we could get back to coding. We as a class worked hard together and became friends.</p>
<p>JP is a master programmer. I mean that in the sense of a martial arts master. He is human, after all, but he has honed his skills and become an expert. Things we had to intellectualize just flow from his heart and mind to his hands at an astounding rate.</p>
<p>Yet the course was more than programming; it was philosophy. We spent a lot of time talking about where we&#8217;ve been, what made us choose programming, where we stand today, and where we&#8217;re headed with our lives. It was food for thought for some, a wake-up call to others of us. I certainly have formed some plans to achieve some goals I&#8217;d only fantasized about before.</p>
<p>Namast&eacute;, JP, and thank you.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/neontapir.wordpress.com/329/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/neontapir.wordpress.com/329/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/neontapir.wordpress.com/329/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/neontapir.wordpress.com/329/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/neontapir.wordpress.com/329/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/neontapir.wordpress.com/329/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/neontapir.wordpress.com/329/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/neontapir.wordpress.com/329/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/neontapir.wordpress.com/329/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/neontapir.wordpress.com/329/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neontapir.wordpress.com&blog=1203210&post=329&subd=neontapir&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://neontapir.wordpress.com/2009/06/14/nothin-but-net-denver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f8c06aafa0c5149e3ab1997802f2be7d?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">neontapir</media:title>
		</media:content>

		<media:content url="http://farm4.static.flickr.com/3658/3626362799_939f0d44f1.jpg" medium="image">
			<media:title type="html">JP Boodhoo</media:title>
		</media:content>
	</item>
	</channel>
</rss>