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

<channel>
	<title>Kuroko Project</title>
	<atom:link href="http://www.kurokoproject.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kurokoproject.com</link>
	<description>visual-minded development</description>
	<lastBuildDate>Tue, 14 Jun 2011 16:00:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Openly certifying your Rubies</title>
		<link>http://www.kurokoproject.com/2011/06/openly-certifying-your-rubies/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=openly-certifying-your-rubies</link>
		<comments>http://www.kurokoproject.com/2011/06/openly-certifying-your-rubies/#comments</comments>
		<pubDate>Tue, 14 Jun 2011 16:00:55 +0000</pubDate>
		<dc:creator>s.f.</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[tip]]></category>

		<guid isPermaLink="false">http://www.kurokoproject.com/?p=143</guid>
		<description><![CDATA[If you&#8217;re using the MacPorts version of OpenSSL, and have a Ruby installed either by MacPorts or RVM, you&#8217;ve probably clashed with the dreaded &#8220;SSLv3 read server certificate B: certificate verify failed&#8221; message (Or you&#8217;ve forced the verification check off, which is not a good idea ) Quick fix: port install curl curl-ca-bundle ln -s [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re using the MacPorts version of OpenSSL, and have a Ruby installed either by MacPorts or <span class="caps">RVM</span>, you&#8217;ve probably clashed with the dreaded &#8220;SSLv3 read server certificate B: certificate verify failed&#8221; message<br />
(Or you&#8217;ve forced the verification check off, which <a href="http://www.rubyinside.com/how-to-cure-nethttps-risky-default-https-behavior-4010.html">is not a good idea</a> )</p>
<p>Quick fix:</p>
<blockquote><p>port install curl curl-ca-bundle<br />
<br />
ln -s /opt/local/share/curl/curl-ca-bundle.crt /opt/local/etc/openssl/cert.pem</p></blockquote>
<p>(using sudo as needed)</p>
<p><span id="more-143"></span></p>
<p>There is <a href="http://redcorundum.blogspot.com/2008/03/ssl-certificates-and-nethttps.html#c7619470286476859850">loads</a> and <a href="http://martinottenwaelter.fr/2010/12/ruby19-and-the-ssl-error/">loads</a> of advice to fix the message, which also tends to revolve around finding/installing the correct base certificates. However, part of the problem is that Ruby&#8217;s Net module&#8217;s default certificate bundle can only be overridden if you&#8217;re creating the Net object yourself, which leaves most external libraries out.</p>
<p>The ultimate solution is that whichever OpenSSL you&#8217;re using needs to have a <span class="caps">PEM</span> file of an appropriate set of root certificates in its base configuration directory. Neither MacPorts nor Apple ships a standalone <span class="caps">PEM</span> file: Apple has them <a href="http://gagravarr.org/writing/openssl-certs/others.shtml#ca-osx">inside the Keychain in <span class="caps">OSX</span> 10.5+</a> , while MacPorts doesn&#8217;t include them with their OpenSSL port (to be fair, they have a <a href="http://lists.macosforge.org/pipermail/macports-tickets/2009-April/028340.html">pretty good reason</a> )</p>
<p>( What&#8217;s the difference between <span class="caps">CRT</span>, <span class="caps">DER</span>, and <span class="caps">PEM</span> you ask? <a href="http://www.gtopia.org/blog/2010/02/der-vs-crt-vs-cer-vs-pem-certificates/">Here&#8217;s a good explanation</a> )</p>
<p>Fortunately, the Curl project <a href="http://curl.haxx.se/docs/sslcerts.html">separated out its certificates</a> awhile ago, and MacPorts ships them as the &#8220;curl-ca-bundle&#8221; port (&#8220;port install curl curl-ca-bundle&#8221; if you don&#8217;t already have them).</p>
<p>Since we&#8217;d rather let the curl-ca-bundle maintainers keep the bundle up to date, we&#8217;ll make a symbolic link instead of copying the file:</p>
<blockquote>
<p>ln -s /opt/local/share/curl/curl-ca-bundle.crt /opt/local/etc/openssl/cert.pem</p>
</blockquote>
<p>(again, using sudo as needed)</p>
<p>Note that this is a separate problem from having general OpenSSL support in Ruby&#8212;if you can &#8220;require &#8216;openssl&#8217;&#8221; successfully or see a top-level &#8216;OpenSSL&#8217; object in irb, your Ruby is already set and you don&#8217;t need to worry about any <span class="caps">RUBYOPT</span> tricks.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kurokoproject.com/2011/06/openly-certifying-your-rubies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>No, We Really Mean &#8220;Vendor It&#8221;</title>
		<link>http://www.kurokoproject.com/2011/06/no-we-really-mean-vendor-it/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=no-we-really-mean-vendor-it</link>
		<comments>http://www.kurokoproject.com/2011/06/no-we-really-mean-vendor-it/#comments</comments>
		<pubDate>Mon, 13 Jun 2011 16:00:40 +0000</pubDate>
		<dc:creator>s.f.</dc:creator>
				<category><![CDATA[deployment]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[tip]]></category>

		<guid isPermaLink="false">http://www.kurokoproject.com/?p=132</guid>
		<description><![CDATA[(Originally posted on tumblr) Now that we have both RVM and Bundler, you&#8217;re following the advice in this article and keeping all your gems in source control, right? No? Why not? &#8220;I have a custom fork that I don&#8217;t want to put on a public server&#8221;? Pfshaw! 1. Put a &#8216;:git&#8217; option in your Gemfile [...]]]></description>
			<content:encoded><![CDATA[<p>(Originally posted on <a href="http://mechazoidal.tumblr.com/">tumblr</a>)</p>
<p>Now that we have both RVM and Bundler, you&#8217;re following the advice in <a href="http://ryan.mcgeary.org/2011/02/09/vendor-everything-still-applies/">this article</a> and keeping all your gems in source control, right?</p>
<p>No? Why not? &#8220;I have a custom fork that I don&#8217;t want to put on a public server&#8221;? Pfshaw!</p>
<p>1. Put a &#8216;:git&#8217; option in your Gemfile pointing to your local repo:</p>
<blockquote>
<p>gem &#8216;my_custom_gem&#8217;, &#8217;1.0.0&#8242;, :git=&gt;&#8217;file://path/to/your/repo&#8217;</p>
</blockquote>
<p>2. Follow the steps in the article:</p>
<blockquote>
<p>bundle install &#8211;path vendor&#8217;</p>
<p>bundler package</p>
</blockquote>
<p>Make sure the gem file for your custom gem is in vendor/cache.</p>
<p>3. Remove the :git flag in your Gemfile </p>
<blockquote>
<p>gem &#8216;my_custom_gem&#8217;, &#8217;1.0.0&#8242;</p>
</blockquote>
<p>4. Run</p>
<blockquote>
<p>bundle install &#8211;path vendor</p>
</blockquote>
<p>again to remove the git references from Gemfile.lock.</p>
<p>5. Check in vendor/cache/*, Gemfile, Gemfile.lock, and .bundle/config to source control.</p>
<p>There now, that wasn&#8217;t so hard. And now you don&#8217;t have to worry about losing the original git repo, or reinstalling the custom gem on every deploy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kurokoproject.com/2011/06/no-we-really-mean-vendor-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wax eloquently, wistfully</title>
		<link>http://www.kurokoproject.com/2011/04/wax-eloquently-wistfully/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=wax-eloquently-wistfully</link>
		<comments>http://www.kurokoproject.com/2011/04/wax-eloquently-wistfully/#comments</comments>
		<pubDate>Wed, 20 Apr 2011 09:11:53 +0000</pubDate>
		<dc:creator>s.f.</dc:creator>
				<category><![CDATA[memories]]></category>
		<category><![CDATA[remembrance]]></category>
		<category><![CDATA[virtual on]]></category>

		<guid isPermaLink="false">http://www.kurokoproject.com/?p=124</guid>
		<description><![CDATA[On April 17th, 2011, Tom Music passed away. Tom was a friend gained through repeated attendance of the Auburn Virtual-On Crew during its heyday in the early 2000&#8217;s. A dynamite Raiden player and expert with prediction lasers, he was usually at least a yomi layer above you. He had the knack of predicting where a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://health.tommusic.net/2011/04/im-so-sorry-to-tell-you/">On April 17th, 2011, Tom Music passed away.</a></p>
<p><span id="more-124"></span></p>
<p>Tom was a friend gained through repeated attendance of the <a href="http://auburnvo.org/">Auburn Virtual-On Crew</a> during its heyday in the early 2000&#8217;s. A dynamite Raiden player and expert with prediction lasers, he was usually at least a <a href="http://www.sirlin.net/articles/yomi-layer-3-knowing-the-mind-of-the-opponent.html">yomi layer</a> above you. He had the knack of predicting where a situation was likely to be going, and making sure all available witticisms were extracted. And no matter the situation, it would be made witty: his archived <a href="http://waxeloquently.com/">personal blog</a> is shades of exploration alternated with childlike fascination, backed by humor drier than Winston Churchill&#8217;s martinis.</p>
<p>That sense of humor and love of a good situation dovetailed into one of his websites, <a href="http://obeythedecider.com">Obey the Decider</a> . Tom was busy describing it at the last Auburn Virtual-On Crew tourney in 2009, as he had just come off of <a href="http://www.youtube.com/watch?v=ghgu-Hi84S0">Seattle Startup Weekend 2</a>, where he&#8217;d pitched the idea. <a href="http://www.flickr.com/photos/mechazoidal/3400935614">While he was waiting for his turn</a> to demolish us with Screw Lasers, he noted that the hidden goal was to &#8216;randomly&#8217; suggest the same place to groups of users based on time, to get people together in a fun location with a common talking point. That was pure Tom&#8212;he was always having a great time and wanted to make sure other people were having just as much fun.</p>
<p>That tourney however, was the last time I physically saw him. His lymphoma was diagnosed three months later. However, he kept everyone up to date using social media and his dedicated health blog <a href="http://health.tommusic.net">Lymphomartini</a>. After getting a smartphone, I followed his Twitter stream during his <a href="http://health.tommusic.net/2010/01/catching-up/">cut-short trip to England</a>, and his speedy recovery back home.</p>
<p>During his early remission in 2009, he managed to get to a public gaming center with the just-released XBLA version of VOOT. He had to use a generic gamertag with no microphone, but we knew who each of us were. I hope that I gave him at least a few good matches like in the old days.</p>
<p>All of these experiences culminated in Tom&#8217;s <a href="http://www.youtube.com/watch?v=l8a8eV_5Yb8">legendary Ignite Seattle talk</a> , using his rich voice and copious sense of humor to make light of his experiences.</p>
<p>Less than a year after that talk, he isn&#8217;t with us anymore. But he never stopped fighting, never stopped encouraging others, and <a href="http://health.tommusic.net/2011/04/hunting-and-pecking-again/">never lost his sense of humor.</a></p>
<p>As good friends of mine have said: I want to be Tom Music when I grow up.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kurokoproject.com/2011/04/wax-eloquently-wistfully/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>For the last time, wheel-stop</title>
		<link>http://www.kurokoproject.com/2011/04/for-the-last-time-wheel-stop/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=for-the-last-time-wheel-stop</link>
		<comments>http://www.kurokoproject.com/2011/04/for-the-last-time-wheel-stop/#comments</comments>
		<pubDate>Wed, 13 Apr 2011 09:01:22 +0000</pubDate>
		<dc:creator>s.f.</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[memories]]></category>
		<category><![CDATA[musing]]></category>

		<guid isPermaLink="false">http://www.kurokoproject.com/?p=90</guid>
		<description><![CDATA[Fifty years ago, one man became the first to fly into space. Five weeks ago, I watched Space Shuttle Discovery&#8217;s final launch with a group of dear friends. And one month ago, Discovery made its final touchdown at Kennedy Space Center. Discovery is the first of the Shuttles to be completely retired. Even though it [...]]]></description>
			<content:encoded><![CDATA[<p>Fifty years ago, <a href="http://yurisnight.net/">one man</a> became the first to fly into space.</p>
<p>Five weeks ago, I watched <a href="http://www.flickr.com/photos/mechazoidal/sets/72157626007014505/">Space Shuttle Discovery&#8217;s final launch</a> with a group of dear friends.</p>
<p>And one month ago, Discovery made its final touchdown at Kennedy Space Center.</p>
<p><span id="more-90"></span></p>
<p>Discovery is the first of the Shuttles to be completely retired. Even though it <a href="http://www.spaceflightnow.com/shuttle/sts133/101203delay/index.html">took awhile</a> to get off the ground this time, it gave a magnificent performance for its swan song.</p>
<p>Like the Concorde, and the family&#8217;s 1978 Nova, it&#8217;s painful to see the Shuttles retired when they&#8217;ve got a spark or two left. But on the other hand, I know that there&#8217;s not much more that can be done with them. The shuttles are high-maintenance machines spawned both from the Apollo era, and a host of requirements that vanished in the time it took to build them.</p>
<p>However, <a href="http://blogs.discovermagazine.com/badastronomy/2011/04/12/a-half-century-of-manned-space-exploration">Phil Plait already covered that ground</a> much better than I could hope to. And the Kennedy Space Center Staff <a href="http://www.youtube.com/watch?v=tr-yTbWuhWE">did their own send-off</a> . That&#8217;s not what this post ended up being about.</p>
<h3>A path for those behind us</h3>
<p>I can&#8217;t recall a time in my life without the shuttle program. I had a <a href="http://www.movablebooksociety.org/popupbooks/BookS/S132.html">Skylab pop-up book</a>, which I&#8217;m pretty sure ended with &#8220;one day, our future spaceplanes will visit this station&#8221;. (Whoops)</p>
<p>For kindergarten, my mom sewed me a naptime pillow. On one side were the usual SF rocketships. But the other side was an iron-on transfer of Columbia&#8217;s first landing in 1981, with the legend &#8216;First Spaceship Lands on Earth&#8217;.</p>
<p>My class was too young to be watching Challenger&#8217;s last launch directly, but I remember the teacher tearfully showing us newspaper articles on the accident. I was playing on the carpet in front of the TV when Dan Rather started mentioning &#8216;O-rings&#8217;. Odyssey Magazine dedicated an issue to explaining the findings of the Rogers Commission, which I re-read for a month.<a href="#foot_1" name="foot_src_1">[1]</a></p>
<h3>The dreams of those who have fallen&#8230;</h3>
<p>The <a href="http://www.pacsci.org/">Pacific Science Center</a> was a staple of Saturday afternoons and childhood memories alike. <a href="#foot_2" name="foot_src_2">[2]</a> Their IMAX theatre ran <a href="http://www.imdb.com/title/tt0084043/">Hail Columbia</a> nonstop until <a href="http://www.imdb.com/title/tt0089050/">The Dream is Alive</a> came out. Dad took us to both, but all I remember was being scared to death of the SRB ignition in full IMAX&reg; audio. For most films in the years afterwards, I had my hands over my ears until I was sure no rockets were about to take off. <a href="#foot_3" name="foot_src_3">[3]</a></p>
<p>On every visit to the Science Center though, my brother and I would always insist on one thing: to sit in the center&#8217;s <a href="http://en.wikipedia.org/wiki/Project_Gemini#Spacecraft">Gemini capsule</a> mockup. We&#8217;d sit in both seats, pretend to be flying in space, and madly flip switches until other impatient kids kicked us out. <a href="http://www.flickr.com/photos/king_aevil/4607521943/in/photostream">And the mockup wasn&#8217;t a kitbash of old car parts</a> : looking into actual Gemini capsules at Kennedy, only the presence of a flight stick stopped the spooky sense that&#8217;d I&#8217;d flipped those same switches before.</p>
<p>Today, NASA announced the final retirement destinations of all four remaining orbiters. None are going to the Seattle Museum of Flight.</p>
<p><a href="http://seattletimes.nwsource.com/html/localnews/2014751898_shuttledecision13m.html">But one of Johnson Space Center&#8217;s simulators is.</a></p>
<h3>&#8230;The hopes of those who will follow</h3>
<p>Even with the thorough scrubbing and decontamination, the odds are good that most museums aren&#8217;t ever going let visitors inside a real Shuttle. I&#8217;m not aware of any actual used space hardware that the public can really touch&#8212;always out of reach, behind a velvet rope.</h3>
<p>Tactile science was a big, big part of my growing up, even if parts of it left me in tears. There&#8217;s still very little that&#8217;s completely hands-off at PSC, and the Museum of Flight has plenty of kid-friendly exhibits. Plus, y&#8217;know, sitting in cockpits.</p>
<p>With a full-size Shuttle simulator, the sky&#8217;s the (ahem) limit for the Museum. Maybe they&#8217;ll open it up to walkthroughs, like their ISS module mockup. Or maybe they&#8217;ll run actual sim missions in it for visitor groups. Whichever they choose, it means that more people can actually feel what it&#8217;d be like, just a little bit. And that little bit, coupled with an active imagination, can take you very far indeed.</p>
<h3>Those two sets of dreams weave together.</h3>
<p>The Gemini flights were finished decades before I was even born. But that didn&#8217;t stop me, my brother, and untold others from sitting in those hard metal chairs and dreaming.</p>
<p>The Gemini mockup is still at Pacific Science Center. And now, the Museum of Flight will have its own piece of tactile space history.</p>
<p>I&#8217;m looking forwards towards seeing the next generation get inspired.</p>
<p></p>
</p>
<p><span class="yafootnote_head">FOOTNOTES</span><br /><span class="yafootnote_body"><a name="foot_1">1.</a>&nbsp;: Unfortunately, Feynman&#8217;s contributions were minimized in the original report, so it wasn&#8217;t until college that I learned of his <a href="http://www.youtube.com/watch?v=8qAi_9quzUY">icewater hijinks</a>.<a href="#foot_src_1">&uarr;</a></span><br /><span class="yafootnote_body"><a name="foot_2">2.</a>&nbsp; Since they never really cleaned their <a href="http://commons.wikimedia.org/wiki/File:PacScienceCenterNight1.jpg">reflective pools</a>, I liked to pretend that the water was sixty feet deep, and <a href="http://www.youtube.com/watch?v=lVkueSuO-GU">Tranzor Z</a> would be launching any minute.<a href="#foot_src_2">&uarr;</a></span><br /><span class="yafootnote_body"><a name="foot_3">3.</a>&nbsp; PSC never failed to alternately fascinate and terrify me. Their <a href="http://en.wikipedia.org/wiki/1980_eruption_of_Mount_St._Helens">Mt. St. Helens</a> exhibit gave me nightmares for half a decade.<a href="#foot_src_3">&uarr;</a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kurokoproject.com/2011/04/for-the-last-time-wheel-stop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I have been in a Strange Loop</title>
		<link>http://www.kurokoproject.com/2010/10/i-have-been-in-a-strange-loop/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=i-have-been-in-a-strange-loop</link>
		<comments>http://www.kurokoproject.com/2010/10/i-have-been-in-a-strange-loop/#comments</comments>
		<pubDate>Sat, 30 Oct 2010 03:33:48 +0000</pubDate>
		<dc:creator>s.f.</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[languages]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.kurokoproject.com/?p=80</guid>
		<description><![CDATA[About three months ago while browsing Proggit, I came across a thread titled simply &#8220;This is an awesome conference&#8221;. Idly browsing the speaker list, I stopped dead at the first two. I still haven&#8217;t gotten around to working through SICP, but I&#8217;ve wanted to hear Guy Steele talk ever since reading &#8220;Growing a Language&#8221;. The [...]]]></description>
			<content:encoded><![CDATA[<p>About three months ago while browsing Proggit, I came across a thread titled simply <a href="http://www.reddit.com/r/programming/comments/cp60q/this_is_an_awesome_conference/">&#8220;This is an awesome conference&#8221;</a>. Idly browsing the speaker list, I stopped dead at the first two.</p>
<p>I still haven&#8217;t gotten around to working through <a href="http://mitpress.mit.edu/sicp/">SICP</a>, but I&#8217;ve wanted to hear Guy Steele talk ever since reading <a href="http://video.google.com/videoplay?docid=-8860158196198824415">&#8220;Growing a Language&#8221;</a>. The sheer amount and variety of the other speakers and subjects gave me pause&#8211;most software conferences that I knew of were either heavily buzzword-based(JavaOne), expensive(RailsConf), or both(again, JavaOne). Hitting up my boss  for support was comically easy after showing him the registration fee and location.</p>
<p><span id="more-80"></span></p>
<h2>Thunder Landing  </h2>
<p>Work covered the flight and registration fee, but it was up to me for<br />
everything else. I ended up staying in the Parkway, two light-rail stops after the <a href="http://visittheloop.com/">Delmar Loop</a>.<br />
This snarled a few after-conference plans, and next time I&#8217;d plan to stay directly at the Moonrise.</p>
<p>Right out of the airport, I started running into fellow attendees: I struck up<br />
a conversation with someone on the light-rail, just from seeing him browsing Hacker News on his phone.</p>
<p>Along those lines, the pre-conference mixer party was a wonderful idea. Most of the people I ran into during the next few days were met here. It didn&#8217;t hurt that there was plentiful beer to boot.</p>
<p>Among other people at the party, I also ended up running into Django devs from <a href="http://www2.ljworld.com/">LJWorld</a>. Contrary to popular opinion, there were no knife-fights, and the conversation was mostly about online publishing. It was pleasantly shocking to learn that they were running into the same design issues I&#8217;ve had, all relating to page-layout and organization.</p>
<h2>Talks and Panels  </h2>
<p>Since my <a href="http://www.yakima-herald.com">employer</a> partially funded the trip, I had to attend some of the panels<br />
relating to their interests. This mostly consisted of the HTML5, Semantic Web, and<br />
jQuery talks. Getting up to speed on all three was actually quite fun, and<br />
I came away with some more project inspiration.</p>
<p>Someone noted that <a href="http://thirstyhead.com/">Scott Davis</a> has a promising future in sermonizing if he leaves coding. Even though his talks didn&#8217;t cover much new ground for me, he brings a great amount of energy and joy to the table. I could listen to him just covering the K&amp;R spec all day.</p>
<p>There was time for &#8220;hey, that sounds cool&#8221; talks as well: Elenor McHugh&#8217;s GoLightly panel was my personal favorite of the conference. She filled the talk with a nonstop stream of discussion about quirks in Google Go, hardware design, email wars with Rob Pike, and plugging her favorite <a href="http://www.amazon.com/Programming-Languages-Samuel-N-Kamin/dp/0201068249">computer literature</a>. Unfortunately, her slides lose a bit without the presentation to back it up, and I don&#8217;t believe this talk was recorded. Still, watching her step through a software CPU design with raw performance metrics took me right back to an infamous CS101 college lecturer.</p>
<p>Talks I missed, and regretted later included Android Squared, Complexity<br />
Theory(later tweets trickling out described it as &#8216;awesome&#8217;), and Automate or Die (sorry <a href="http://twitter.com/cashion">cashion</a>!)</p>
<h2>Famous Programmers &#8220;G.S.&#8221; and &#8220;D.C.&#8221; are Approaching Fast</h2>
<p>The main keynotes for me were of course Guy Steele&#8217;s &#8220;How to think about Parallel Programming&#8221; and Douglas Crockford&#8217;s &#8220;Heresy and Heretical Open Source&#8221;. Prior to these, there were also a few round-table talks that included them.</p>
<p>The earliest one I saw was the &#8220;Future of Programming Languages&#8221; talk that also included Bruce Tate, Alex Payne, and Josh Bloch. During the talk, someone from the crowd asked about Javascript becoming a layer to run more sane languages on. Doug&#8217;s reaction was priceless. I wished I&#8217;d been able to ask a followup about <a href="http://github.com/richcollins/crux">crux</a> to score Bruce&#8217;s reaction as well.</p>
<p>All of the language panelists were asked for a recommendation. Guy&#8217;s was &#8216;learn three languages: the thought process will do more for you than any single one&#8217;. However, he was pressed to give more of a soundbite answer and settled on Clojure, which violently murdered all other trending Twitter topics for the next hour.</p>
<p>During his keynote, Guy spent 20 minutes reverse-engineering an old formatting program from punchcard, stepping through memory tricks and <a href="http://en.wikipedia.org/wiki/IBM_1130">IBM 1130</a> lore, before demonstrating algebraic operators in his Fortress research language. There&#8217;s been a lot of talk on what he said and did not say at his talk, but the core point seems to have shone through: don&#8217;t let the workarounds of the past drive the design of the future.</p>
<p>Douglas Crockford&#8217;s talk swerved madly between analyzing Google&#8217;s &#8220;don&#8217;t be evil&#8221; statement to the history of HTML syntax(stopping briefly at his <a href="http://www.crockford.com/tilton/tilton.html">Tilton macro processor</a>. Of course, he got the most cheers from his &#8220;IE Must Die&#8221; slides.</p>
<h2>Word on the Street</h2>
<p>Honestly, the most unexpected and wonderful thing was the general atmosphere of the conference. The Moonlight/Pageant/RAC trio is an excellent venue, and both the venue and on the  allowed a lot of hallway discussion. The staff further encouraged this with lightning talks at an official party but it almost wasn&#8217;t necessary.<br />
I ended up spending almost every night out drinking and conversing with many amazing people on almost every nerd topic under the sun. Even after the conference, I was able to find a lot of conversation as well.</p>
<p>Talking with another attendee who&#8217;d been to several other &#8220;grassroot conferences&#8221; suggested that most other conferences don&#8217;t have nearly the sheer amount of energy and passion that Strange Loop does. As their <a href="http://strangeloop2010.com/">page</a> states, &#8220;Innovation happens in the magical nexus &#8220;between&#8221; established areas&#8221;. They simply bring a crowd of talented people together and let them go full-steam-ahead.</p>
<p>And as a tech-business owner noted the first evening, Strange Loop would be cheap at twice the price. Being in a central location of the US and attracting such big-name talent merely sweetened the pot.</p>
<p>I know that I already can&#8217;t wait until next year. If I only could attend one conference per year(and who am I kidding, this is the only conference I&#8217;ve attended in the past 7 years), Strange Loop would be it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kurokoproject.com/2010/10/i-have-been-in-a-strange-loop/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>peg-trees and you</title>
		<link>http://www.kurokoproject.com/2009/06/peg-trees-and-you/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=peg-trees-and-you</link>
		<comments>http://www.kurokoproject.com/2009/06/peg-trees-and-you/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 05:02:12 +0000</pubDate>
		<dc:creator>s.f.</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[languages]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.kurokoproject.com/?p=73</guid>
		<description><![CDATA[Recently at work, I needed to parse ugly data files from an ancient classified-ads database that a predecessor devoted an entire Ruby application to. While painstakingly building regexes, I remembered looking at Treetop a few months ago. Treetop is a Ruby library for writing Parsing expression grammars. PEGs are another way of constructing grammars and [...]]]></description>
			<content:encoded><![CDATA[<p>Recently at work, I needed to parse ugly data files from an ancient classified-ads database that a predecessor devoted an entire Ruby application to. While painstakingly building regexes, I remembered looking at <a href="http://treetop.rubyforge.org">Treetop</a> a few months ago. </p>
<p>Treetop is a Ruby library for writing <a href="http://en.wikipedia.org/wiki/Parsing_expression_grammar">Parsing expression grammars</a>. PEGs are another way of constructing grammars and could be thought of as super-regexes: they don&#8217;t allow left-lookup or ambiguity in the parse tree, making them not so useful for natural language but killer for computer languages. Around 40 lines of code and 7 rules took the place of what the original author devoted dedicated tempfiles and <a href="http://www.codinghorror.com/blog/archives/000486.html">regex arrow code</a> to.</p>
<p>That being said, PEGs are conceptually harder to get grips on, and Treetop&#8217;s documentation is not entirely clear on some hangups you might find. Most of which you can solve using the excellent <a href="http://groups.google.com/group/treetop-dev">mailing list</a>, but I know I wished during the past few days that I could get it summed up for me.<br />
<span id="more-73"></span></p>
<ol>
<li>Have a base rule. Originally I tried parsing a list of categories with the &#8220;category&#8221; rule at the top. This causes accessor methods to be defined in the wrong modules. Like XML, you should have a &#8220;root&#8221; rule that only defines how to find the rest of the content in the file. I.e. mine finds the categories, and has a default method to compose them into a list based on responds_to? and find_all.</li>
<li>Use the label accessor methods! While Treetop allows rule-substitution like variables, those don&#8217;t automatically get turned into variables. Think &#8216;beginning&#8217; rule_value:rule &#8216;end&#8217;, and call rule_value.elements from the methods defined on the core rule.</li>
<li>Use .inspect and tt when you get stuck! Calling
<parser>.parse.inspect will produce a handy formatted string of the parse tree(if it succeeded, if it didn&#8217;t, call
<parser>.failure_reason to find out why). &#8216;tt&#8217; is a script included with Treetop that compiles your grammar out into a Ruby file, which is how you can find where methods are and aren&#8217;t being defined.</li>
</ol>
<p>Since code speaks louder than words:<br />
<script src="http://gist.github.com/128439.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kurokoproject.com/2009/06/peg-trees-and-you/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>live a live (a-go-go)</title>
		<link>http://www.kurokoproject.com/2009/05/live-a-live-a-go-go/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=live-a-live-a-go-go</link>
		<comments>http://www.kurokoproject.com/2009/05/live-a-live-a-go-go/#comments</comments>
		<pubDate>Mon, 18 May 2009 02:14:22 +0000</pubDate>
		<dc:creator>s.f.</dc:creator>
				<category><![CDATA[game]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[virtual on]]></category>

		<guid isPermaLink="false">http://www.kurokoproject.com/?p=69</guid>
		<description><![CDATA[I&#8217;m flattered that the previous article has been showing up in a few blogs and forums. Interestingly, it&#8217;s being used as an insight for newbies into VO:OT&#8217;s movement schema, and in one case an entertaining dismissal of the non-explanatory bits as &#8220;hardcore religious twinstick nonsense&#8221; I&#8217;m still planning on adapting my Saturn sticks, as an [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m flattered that the <a href="http://www.kurokoproject.com/2009/03/two-sticks-of-fury/">previous article</a> has been showing up in a few blogs and forums. Interestingly, it&#8217;s being used as an insight for newbies into VO:OT&#8217;s movement schema, and in one case an entertaining dismissal of the non-explanatory bits as &#8220;hardcore religious twinstick nonsense&#8221; <img src='http://www.kurokoproject.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>I&#8217;m still planning on adapting my Saturn sticks, as an opportunity to improve my hardware-hacking skills by building a <a href="http://forums.shoryuken.com/showthread.php?t=131230">Universal PCB adapter</a>. Progress and pics on this to follow as things are developed.</p>
<p>As can be seen in the sidebar, I&#8217;ve acquired both an Xbox 360 and a Live account, and have been well pleased by the VO:OT 5.66 port. While using the 360 pad has crippled my quick-step reflexes(for now), it&#8217;s forced me to use more long-range characters that I haven&#8217;t made a habit of playing. This in turn has exposed some longstanding bad habits in my play style: repeated side-to-forward Watari dashing and constant rushdown attempts. It helps that there&#8217;s a lot of good Japanese players hanging around, and willing to school you without trash-talking or ragequitting.</p>
<p>So in spite of my noting of VOOT&#8217;s design dependency on sticks, don&#8217;t let that stop you from joining in! If you&#8217;ve ever played any Virtual On game and come away pleased, or if you&#8217;re looking for a grueling-yet-rewarding learning curve, this is an excellent time to start. The VO community is breathing again and it&#8217;s always a good day to SELECT YOUR VIRTUAROID and GET READY.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kurokoproject.com/2009/05/live-a-live-a-go-go/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Two Sticks of Fury</title>
		<link>http://www.kurokoproject.com/2009/03/two-sticks-of-fury/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=two-sticks-of-fury</link>
		<comments>http://www.kurokoproject.com/2009/03/two-sticks-of-fury/#comments</comments>
		<pubDate>Fri, 13 Mar 2009 20:10:43 +0000</pubDate>
		<dc:creator>s.f.</dc:creator>
				<category><![CDATA[game]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[serious business]]></category>
		<category><![CDATA[virtual on]]></category>

		<guid isPermaLink="false">http://www.kurokoproject.com/?p=35</guid>
		<description><![CDATA[The upcoming re-release of Cyber Troopers: Virtual On Oratorio Tangram(lovingly abbreviated as &#8220;VOOT&#8221;) has begun a revitalizing of a long-dormant community. However, the unique control system for Oratorio Tangram(or OraTan for the short-short abbreviation) may not be ported over and I wanted to explain exactly how two digital sticks are the very heart and soul [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://kotaku.com/5168878/sega-makes-us-release-of-virtual-on-xbla-official">upcoming re-release</a> of Cyber Troopers: Virtual On Oratorio Tangram(lovingly abbreviated as &#8220;VOOT&#8221;) has begun a revitalizing of a long-dormant community.<br />
However, the unique control system for Oratorio Tangram(or OraTan for the short-short abbreviation) may not be ported over and I wanted to explain exactly how two digital sticks are the very heart and soul of Virtual On.<br />
<span id="more-35"></span><br />
A growing number of forum-goers have been asking why dedicated fans are <a href="http://www.gamesetwatch.com/2009/03/column_robotochan_virtuak_onta.php">concerned</a> about how Sega will adapt the control system. More precisely: why we clamor for <a href="http://www.dreamcastgallery.com/dc/gallery.asp?selected_controller_id=154">Twin Sticks</a>. Some people are convinced that the twin analog sticks on a 360 controller would suffice to duplicate Twin Sticks, or that a controller is “faster”.</p>
<p>
Adding to the problem is most Westerners&#039; cultural identification of the twin-stick control system. Almost every gamer has unconscious memories of <a href="http://en.wikipedia.org/wiki/Battlezone_(arcade_game)" >Battlezone</a> or <a href="http://en.wikipedia.org/wiki/Tank_(arcade_game)">Tank</a>. Both of these games used a pair of stick controls, and were extremely limited in their movement options: rotate left or right, move forwards, and move back. Most players logically assume that Virtual On is just as limited, and chalk it up as a mech-game with a novelty tank-layout control system. And this frequently leaves them minus a credit after the AI opponent has done some simple dashes and wiped the floor with them.
</p>
<p>
The Virtual On series are not really 3D combat games. They are effectively a 3D fighting game based around fixed-length vectors. Trying to play it like a typical FPS will only cause confusion and defeat. Insert Credit&#039;s <a href="http://www.insertcredit.com/reviews/pn03/index.html">PN.03 review</a> identified a similar theme: your motions are arbitrarily constrained to give purpose to the game. If you could run willy-nilly throughout the level and shoot at your opponent, you&#039;ve just re-invented Quake(or Shogo, I suppose). Both PN.03 and Virtual On are defined by their control limitations as much as they are restricted by them. And thus trying to remap the underlying control input will not result in happy players.</p>
<p>
To see what makes VO so different, let&#039;s start at the basic manuevers, and work our way to the top.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kurokoproject.com/2009/03/two-sticks-of-fury/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>reeses or tabasco?</title>
		<link>http://www.kurokoproject.com/2008/12/reeses-or-tabasco/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=reeses-or-tabasco</link>
		<comments>http://www.kurokoproject.com/2008/12/reeses-or-tabasco/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 22:35:43 +0000</pubDate>
		<dc:creator>s.f.</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[musing]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[serious business]]></category>

		<guid isPermaLink="false">http://www.kurokoproject.com/?p=34</guid>
		<description><![CDATA[Everybody&#8217;s talking about it. Couple of days in jail, whole town changes, etc. There are two camps over this currently: the Rails side(&#8220;Whoo! Chocolate in my peanut-butter! Less magic and plugins that don&#8217;t explode randomly between versions!&#8221;), and the Merb side(&#8220;DHH is going to defenestrate us all! They won&#8217;t taste great! These books from the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://weblog.rubyonrails.com/2008/12/23/merb-gets-merged-into-rails-3">Everybody&#8217;s</a> <a href="http://yehudakatz.com/2008/12/23/rails-and-merb-merge">talking</a> <a href="http://brainspl.at/articles/2008/12/23/merb-is-rails">about</a> <a href="http://merbist.com/2008/12/23/rails-and-merb-merge/">it</a>. Couple of days in jail, whole town changes, etc.</p>
<p>There are two camps over this currently: the Rails side(&#8220;Whoo! Chocolate in my peanut-butter! Less magic and plugins that don&#8217;t explode randomly between versions!&#8221;), and the Merb side(&#8220;DHH is going to defenestrate us all! <a href="http://maze.icomix.com/comicpage/b.php?i=262">They won&#8217;t taste great!</a> These books from the tech section are out-of-date six months earlier than usual!&#8221;</p>
<p>I&#8217;m mostly in the Rails camp(due to work), with a little of the Merb camp. It would be nice to keep them existing as separate frameworks, if only because of the other elephant in the room: the Rails-branding(read: money) and need to provide splashdown points for decamping Java webapp programmers. However, the Merb team seems to think this won&#8217;t be an issue, so I&#8217;ll reserve judgment for when the behemoth finally appears. </p>
<p>In any case, the fact that DHH and the Rails team are willing to adopt formal APIs, clearly define module boundaries, and leave monkey-patching behind is a welcome sign.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kurokoproject.com/2008/12/reeses-or-tabasco/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>a huge beanie is approaching fast</title>
		<link>http://www.kurokoproject.com/2008/11/a-huge-beanie-is-approaching-fast/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-huge-beanie-is-approaching-fast</link>
		<comments>http://www.kurokoproject.com/2008/11/a-huge-beanie-is-approaching-fast/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 06:49:30 +0000</pubDate>
		<dc:creator>s.f.</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[tip]]></category>

		<guid isPermaLink="false">http://www.kurokoproject.com/?p=33</guid>
		<description><![CDATA[In Rails, one form helper(well, besides a broken date_select) stands alone as cruel, sadistic, and impossible-to-please with just a simple hash. That form helper&#8217;s name: option_groups_from_collection_for_select. It&#8217;s so painful that most people would re-implement it, rather than fall victim to its NoMethodError wails. But that&#8217;s not the path for us. When you&#8217;re using something like [...]]]></description>
			<content:encoded><![CDATA[<p>In Rails, one form helper(well, besides a <a href="http://dev.rubyonrails.org/ticket/10551">broken date_select</a>) stands alone as cruel, sadistic, and impossible-to-please with just a simple hash. That form helper&#8217;s name: <a href="http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html">option_groups_from_collection_for_select</a>.</p>
<p>It&#8217;s so painful that most people would <a href="http://railsforum.com/viewtopic.php?id=20711">re-implement it</a>, rather than fall victim to its NoMethodError wails. But that&#8217;s not the path for us. When you&#8217;re using something like <a href="http://agilewebdevelopment.com/plugins/activerecord_base_without_table">Base Without Table</a> to clean up your email contact forms, you don&#8217;t have time to mess around with o_g_f_c_f_s&#8217; hunger for has_many. That&#8217;s when you pull out <a href="http://www.ruby-doc.org/stdlib/libdoc/ostruct/rdoc/classes/OpenStruct.html">OpenStruct</a>, and cleave the beast in twain.<br />
<span id="more-33"></span><br />
pointy_group.rb:<br />
<script src="http://gist.github.com/29295.js"></script><br />
pointy_view.html.erb:<br />
<script src="http://gist.github.com/29300.js"></script></p>
<p>Standard disclaimers apply. Enterprising developers can probably spot the limitation, although it&#8217;s probably not hard to pave over it if you need to.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kurokoproject.com/2008/11/a-huge-beanie-is-approaching-fast/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
