<?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>Red Leopard</title>
	<atom:link href="http://www.redleopard.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.redleopard.com</link>
	<description>A Stranger in a Strange Land</description>
	<lastBuildDate>Wed, 18 Aug 2010 07:47:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>eight sides open</title>
		<link>http://www.redleopard.com/2010/08/eight-sides-open/</link>
		<comments>http://www.redleopard.com/2010/08/eight-sides-open/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 07:47:25 +0000</pubDate>
		<dc:creator>kelly</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.redleopard.com/?p=1046</guid>
		<description><![CDATA[An expression piece from my ITP GLBM7600 Intro to Transpersonal Theory class. I thought of it again yesterday while in another class. BTW, &#8216;eight sides open&#8217; refers to a state of panoramic awareness. Though eight sides open has been described in many cultures, I draw upon the tradition of Musashi. The dragonfly shows utter equanimity [...]]]></description>
			<content:encoded><![CDATA[<p><a href="images/glbm7600-dragonfly-2010-05-30-v1.jpg"><img width="592" height="340" style="float: left; margin: 0 0.5em 0.5ex 0;" alt="haiku: watchful dragonfly, sits calmly upon a reed, open on eight sides" src="/images/glbm7600-dragonfly-2010-05-30-v1.jpg" /></a></p>
<p>An expression piece from my <a href="http://www.itp.edu/academics/classes/coursedescriptions-gma.php">ITP GLBM7600</a> Intro to Transpersonal Theory class. I thought of it again yesterday while in another class. BTW, &#8216;eight sides open&#8217; refers to a state of panoramic awareness. Though eight sides open has been described in many cultures, I draw upon the tradition of Musashi. The dragonfly shows utter equanimity and absolute awareness.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.redleopard.com/2010/08/eight-sides-open/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MIT 9.00</title>
		<link>http://www.redleopard.com/2010/07/mit-9-00/</link>
		<comments>http://www.redleopard.com/2010/07/mit-9-00/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 14:08:33 +0000</pubDate>
		<dc:creator>kelly</dc:creator>
				<category><![CDATA[KellyBlog]]></category>
		<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://www.redleopard.com/?p=1019</guid>
		<description><![CDATA[I recently finished Paul Bloom’s intro psych course and thought I’d continue my survey with Jeremy Wolfe’s MIT 9.00: Introduction to Psychology. I&#8217;m only two lectures in and already I sense Dr. Wolfe’s class has heavier technical leanings. That’s not a bad thing. To read broadly expands awareness. I tried comparing the syllabi from Yale [...]]]></description>
			<content:encoded><![CDATA[<p><img width="280" height="168" style="float: left; margin: 0 0.5em 0.5ex 0;" alt="open yale logo" src="/images/mit-opencourseware-logo.jpg" /></p>
<p>I recently finished Paul Bloom’s <a href="/2010/05/oyc-psyc-110/">intro psych</a> course and thought I’d continue my survey with Jeremy Wolfe’s <a href="http://ocw.mit.edu/courses/brain-and-cognitive-sciences/9-00-introduction-to-psychology-fall-2004/index.htm">MIT 9.00: Introduction to Psychology</a>. I&#8217;m only two lectures in and already I sense Dr. Wolfe’s class has heavier technical leanings. That’s not a bad thing. To read broadly expands awareness.</p>
<p>I tried comparing the syllabi from Yale and MIT. There is <i>some</i> overlap but there is far more unique content than not. At least that’s my impression comparing the two sets of reading assignments. I’ll know more when I finish the balance of the 23 lectures. </p>
<p>So far, I’m pleased. Dr. Bloom has a speaking style that stands apart; he is a hard act to follow. Listening to another lecturer rehash the same syllabus would invite comparison on delivery rather than on content. Happily, this isn’t the case. Even when discussing common material, the lecturers maintain unique courses. As an example, both lecturers talk about Thorndike’s work with cats and puzzle boxes. Even though they talk about the same experiment, the context created by the speakers gives each of their respective lectures a different cast.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.redleopard.com/2010/07/mit-9-00/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>loyal and gentle friend</title>
		<link>http://www.redleopard.com/2010/06/loyal-and-gentle-friend/</link>
		<comments>http://www.redleopard.com/2010/06/loyal-and-gentle-friend/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 22:59:44 +0000</pubDate>
		<dc:creator>kelly</dc:creator>
				<category><![CDATA[KellyBlog]]></category>
		<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://www.redleopard.com/?p=1014</guid>
		<description><![CDATA[Truffles (1996 &#8211; 2010) Loyal and Gentle Friend “Look in my eyes, Lord, and my sins will play out on them as on a screen. Read them all. Forgive what you can, and send me on my path. I will walk on, until you bid me rest.” —Shepherd Book]]></description>
			<content:encoded><![CDATA[<p><img width="592" height="444" style="float: left; margin: 0 0.5em 0.5ex 0;" alt="Truffles, my sitting partner" src="/images/truffles-sitting-partner-2010-05-27.jpg" /></p>
<p>Truffles (1996 &#8211; 2010)<br />
Loyal and Gentle Friend</p>
<p>“Look in my eyes, Lord, and my sins<br />
will play out on them as on a screen.<br />
Read them all.</p>
<p>Forgive what you can, and send<br />
me on my path. I will walk on,<br />
until you bid me rest.”<br />
—Shepherd Book</p>
]]></content:encoded>
			<wfw:commentRss>http://www.redleopard.com/2010/06/loyal-and-gentle-friend/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ten Apple Announcements That Would Not Disappoint</title>
		<link>http://www.redleopard.com/2010/05/ten-apple-announcements-that-would-not-disappoint/</link>
		<comments>http://www.redleopard.com/2010/05/ten-apple-announcements-that-would-not-disappoint/#comments</comments>
		<pubDate>Fri, 28 May 2010 00:24:58 +0000</pubDate>
		<dc:creator>kelly</dc:creator>
				<category><![CDATA[KellyBlog]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://www.redleopard.com/?p=967</guid>
		<description><![CDATA[There are a lot of haters out there but I&#8217;m still rooting for Apple. I want Apple to succeed. I&#8217;m not going to WWDC&#160;2010 (tapped out of conference budget). I wish I were going. Job&#8217;s &#8220;you won&#8217;t be disappointed&#8221; promise has my head spinning. I like surprises. I hope Apple doesn&#8217;t disappoint. So, what would [...]]]></description>
			<content:encoded><![CDATA[<p><img width="174" height="187" style="float: left; margin: 0 0.5em 0.5ex 0;" alt="wwdc2010 badge" src="/images/wwdc2010-badge.png" /></p>
<p>There are a lot of haters out there but I&#8217;m still rooting for Apple. I want Apple to succeed. I&#8217;m not going to <a href="http://developer.apple.com/wwdc/">WWDC&nbsp;2010</a> (tapped out of conference budget).</p>
<p>I wish I were going.</p>
<p>Job&#8217;s &#8220;you won&#8217;t be disappointed&#8221; promise has my head spinning. I like surprises. I hope Apple doesn&#8217;t disappoint.</p>
<p>So, what would I like to see announced? Here&#8217;s my top ten list of wishful thinking.</p>
<p><b>1. CloudWorks</b></p>
<p>I liked iTools until it became NotFree and then MobileMe. It just seemed regressive in the age of free online calendars and email. I guess I&#8217;ve never gotten over it.</p>
<p>I&#8217;d like to see MobileMe move to CloudWorks, a name I made up to describe the mythical <a href="http://localtechwire.com/business/local_tech_wire/news/blogpost/7527019/">Apple Cloud</a>.</p>
<p><i>iLife</i></p>
<p>MobileMe backs iLife right now. There are a few issues to solve when iLife is backed by CloudWorks.</p>
<p><b>2. iPhoto backed by CloudWorks</b></p>
<p>A Freemium flickr-like model with auto-connection to iPhoto (and Aperature). Some base level service at no charge then additional service levels at a competitive cost.</p>
<p><b>3. iMovie backed by CloudWorks</b></p>
<p>A vimeo or viddler like service with auto-connection to iMovie. Some base level service at no charge then additional service levels at a competitive cost. The real advantage is HTML5 video streaming.</p>
<p><i>iWorks</i></p>
<p>iWorks is, ummm, okay. Except for Numbers. I cannot yet replace Excel with Numbers.</p>
<p><b>4. Super iWeb backed by CloudWorks</b></p>
<p>I know, I know. iWeb publishes to MobileMe now. I would like to see a tiered pricing plan. iWeb isn&#8217;t a web application authoring system. It&#8217;s a kinder, gentler DreamWeaver or FrontPage. Not everyone want&#8217;s to create the next twitter of foursquare. Sometimes a simple website is appropriate. Maybe $1.99/month for the basic service (charged to the App Store). Bandwidth and storage overages are competitive.</p>
<p>I&#8217;d like to see iWeb extended as a client editor for WordPress and/or MoveableType. Even better, a deal with one of these vendors to provide the service on CloudWorks.</p>
<p><b>5. Pages backed by CloudWorks</b></p>
<p>I use Pages to write papers for school (which I must export into Word format for online submission). Pages is more pleasing to use than Word so long as I don&#8217;t need to do much formatting. Besides, I do most of my draft writing using a combination of <a href="http://www.barebonessoftware.com/products/bbedit/">BBEdit</a> and <a href="http://www.literatureandlatte.com/scrivener.html">Scrivener</a>. This blog article was drafted in BBEdit, for example. However, I&#8217;d like to save my Pages documents to CloudWorks with revision control. When I grant someone permission to pull the document down, they can select one of three formats: Pages, Word or PDF.</p>
<p>While we&#8217;re at it, I&#8217;d like to see a repository in CloudWorks for templates. CloudWorks users can submit templates to the repository and other members can rate the template. Like a APA compliant template.</p>
<p><b>6. Keynote backed by CloudWorks</b></p>
<p>Keynote is love/hate. It too is more pleasing to use than PowerPoint but almost nobody I interact with uses Keynote so I have that extra <i>export to PowerPoint</i> step. My favorite presentation tool is <a href="http://www.omnigroup.com/products/omnigraffle/">OmniGraffle</a>. It&#8217;s a joy to work with and I like the way it looks in presentation mode. However, there is only one person I share presentations with who has OmniGraffle. Just one. I end up exporting to PDF.</p>
<p>I&#8217;d like to save my Keynote presentations to CloudWorks with revision control. When I grant someone permission to pull the document down, they can select one of three formats: Keynote, PowerPoint or PDF. Additionally, there is an HTML5 presentation feature that allows for online slideshow viewing.</p>
<p><i>Fix Things</i></p>
<p>There just two things I&#8217;d like fixed. They may seem small but it&#8217;s my blog and I&#8217;m making a statement.</p>
<p><b>7. Fix iTunes U</b></p>
<p>Maybe no one but me uses iTunes U and therefore no one will be disappointed if there are no improvements here. Except for me. I&#8217;ll be disappointed. For example, the ability to sort the lectures within a course. That would be nice.</p>
<p>It seems as if Apple has conceded K-12 to Windows. I would like to see the Mac emerge as strong leader in online education. That&#8217;s just me being selfish as I like school.</p>
<p><b>8. Fix the Cocoa Finder</b></p>
<p>I was happy to hear Apple moved Finder from Carbon to Cocoa… until I used it. There are subtle annoying quirks that showed up in the new Finder. For example, when I tab between desktops in Spaces, the focus is wrong when I get there. Even when the application has the focus (in the menu) upon arrival to a new desktop, the actual window doesn&#8217;t have focus.</p>
<p><i>Two More Things</i></p>
<p><b>9. iPhone on Verizon</b></p>
<p>I know this is a very United States centric request but this is where I live. ATT service at my house sucks. I&#8217;d immediately switch to Verizon. I don&#8217;t much care for Verizon but they do have great coverage (including my house).</p>
<p><b>10. Full CSS3, HTML5 Support in Safari</b></p>
<p>Whatever that means. I&#8217;d be happy if Safari reached functional parity with Chrome (except for the audio/video elements, cause that&#8217;s just not going to happen.) Safari is <a href="http://findmebyip.com/litmus/#target-selector">not far off</a>.</p>
<p>Will any of this emerge at WWDC 2010? Who knows? Maybe what&#8217;s coming is so stunning that it eclipses any of my current desires. <-- grin --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.redleopard.com/2010/05/ten-apple-announcements-that-would-not-disappoint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OYC PSYC 110</title>
		<link>http://www.redleopard.com/2010/05/oyc-psyc-110/</link>
		<comments>http://www.redleopard.com/2010/05/oyc-psyc-110/#comments</comments>
		<pubDate>Fri, 21 May 2010 15:54:43 +0000</pubDate>
		<dc:creator>kelly</dc:creator>
				<category><![CDATA[KellyBlog]]></category>
		<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://www.redleopard.com/?p=956</guid>
		<description><![CDATA[I&#8217;ve stumbled upon a new means of relaxation at Open Yale Courses. It sounds strange that recordings of university lectures are relaxing but I find they are. Paul Bloom&#8217;s PSYC 110: Introduction to Psychology is far more interesting than television. I&#8217;m currently on lecture ten of twenty. His has an enjoyable speaking style; the hour [...]]]></description>
			<content:encoded><![CDATA[<p><img width="200" height="82" style="float: left; margin: 0 0.5em 0.5ex 0;" alt="open yale logo" src="/images/open-yale-logo.png" /></p>
<p>I&#8217;ve stumbled upon a new means of relaxation at <a href="http://oyc.yale.edu/">Open Yale Courses</a>. It sounds strange that recordings of university lectures are relaxing but I find they are. Paul Bloom&#8217;s <a href="http://oyc.yale.edu/psychology/introduction-to-psychology/">PSYC 110: Introduction to Psychology</a> is far more interesting than television. I&#8217;m currently on lecture ten of twenty.</p>
<p>His has an enjoyable speaking style; the hour flies by. A sidebar at the end of Dr. Bloom&#8217;s lecture on Freud exemplifies his sense of humor.</p>
<p>&#8220;One other thing on Freud&#8211;just a story of the falsification of Freud. I was taking my younger child home from a play date on Sunday and he asked me out of the blue, &#8220;Why can&#8217;t you marry your mother or your father?&#8221; Now, that&#8217;s actually a difficult question to ask&#8211;to answer for a child, but I tried my best to give him an answer. And then I said&#8211;then I thought back on the Freud lecture and so I asked him, &#8220;If you could marry anybody you want, who would it be?&#8221; imagining he&#8217;d make explicit the Oedipal complex and name his mother. Instead, he paused for a moment and said, &#8216;I would marry a donkey and a big bag of peanuts.&#8217; [laughter] Both his parents are psychologists and he hates these questions and at times he just screws around with us.&#8221; [<a href="http://oyc.yale.edu/yale/psychology/introduction-to-psychology/content/transcripts/transcript04.html">source</a>]</p>
<p>The lectures are available on the Open Yale Courses website as audio, video and text transcripts. There are reading assignments, which I skip. (I&#8217;m currently taking courses elsewhere with considerable reading requirements.) One could probably get most of the value found in the original course if they completed the assignments but that&#8217;s not really my objective. For me, the lectures are firstly informative and secondly entertaining.</p>
<p>I originally downloaded the audio files from <a href="http://deimos3.apple.com/WebObjects/Core.woa/Browse/yale.edu.1899415254.01899415262">iTunes U</a> but found that I had to move the audio out of iTunes U and into music so I could create a playlists. The lectures show up out of order in iTunes U and I cannot for the life of me puzzle out how to rearrange the order except as a playlist.</p>
<p>It&#8217;s nice to find a gem among the dredge that we know as <i>the internet</i>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.redleopard.com/2010/05/oyc-psyc-110/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Get Spiked</title>
		<link>http://www.redleopard.com/2010/05/get-spiked/</link>
		<comments>http://www.redleopard.com/2010/05/get-spiked/#comments</comments>
		<pubDate>Mon, 17 May 2010 17:05:46 +0000</pubDate>
		<dc:creator>kelly</dc:creator>
				<category><![CDATA[KellyBlog]]></category>
		<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://www.redleopard.com/?p=949</guid>
		<description><![CDATA[I&#8217;ve become increasingly disillusioned with broadcast and cable news outlets. News outlets have sadly taken distinctly partisan roles in society. I find their content specious at best and makes for very poor commentary. (One notable except is Deutsche Welle.) I recently stumbled upon spiked, which itself has a bias but its bias pleasantly lacks the [...]]]></description>
			<content:encoded><![CDATA[<p><img width="157" height="100" style="float: left; margin: 0 0.5em 0.5ex 0;" alt="spiked e-zine logo" src="/images/spiked-logo.gif" /></p>
<p>I&#8217;ve become increasingly disillusioned with broadcast and cable news outlets.  News outlets have sadly taken distinctly partisan roles in society. I find their content specious at best and makes for very poor commentary. (One notable except is <a href="http://www.dw-world.de/">Deutsche Welle</a>.)</p>
<p>I recently stumbled upon <a href="http://www.spiked-online.com/"><i>spiked</i></a>, which itself has a bias but its bias pleasantly lacks the shrill insanity commonly found nowadays. It&#8217;s not news but rather commentary on newsworthy events and trends. Even those articles with which I disagree will often have a point two I hadn&#8217;t considered. I find this to be the real value.</p>
<p>“<i>spiked</i> is an independent online phenomenon dedicated to raising the horizons of humanity by waging a culture war of words against misanthropy, priggishness, prejudice, luddism, illiberalism and irrationalism in all their ancient and modern forms. <i>spiked</i> is endorsed by free-thinkers such as John Stuart Mill and Karl Marx, and hated by the narrow-minded such as Torquemada and Stalin. Or it would be, if they were lucky enough to be around to read it.” —From the <i>spiked</i> about page, <a href="http://www.spiked-online.com/">www.spiked-online.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.redleopard.com/2010/05/get-spiked/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>bash uuid generator</title>
		<link>http://www.redleopard.com/2010/03/bash-uuid-generator/</link>
		<comments>http://www.redleopard.com/2010/03/bash-uuid-generator/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 04:20:50 +0000</pubDate>
		<dc:creator>kelly</dc:creator>
				<category><![CDATA[KellyBlog]]></category>
		<category><![CDATA[bash]]></category>

		<guid isPermaLink="false">http://www.redleopard.com/?p=913</guid>
		<description><![CDATA[Onliner bash scripts are handy but bash and common utilities don&#8217;t always work the same on the two systems I most use: Centos vs. OS X. centos $ cat /etc/redhat-release CentOS release 5.4 (Final) osx $ sw_vers &#124; head -n2 ProductName: Mac OS X ProductVersion: 10.6.2 For example, I recently wrote a simple script to [...]]]></description>
			<content:encoded><![CDATA[<p>Onliner bash scripts are handy but bash and common utilities don&#8217;t always work the same on the two systems I most use: Centos vs. OS X.</p>
<div class="terminal">
<pre>
centos $ <span style="color: green;">cat /etc/redhat-release </span>
CentOS release 5.4 (Final)
</pre>
</div>
<div class="terminal">
<pre>
osx $ <span style="color: green;">sw_vers | head -n2</span>
ProductName:	Mac OS X
ProductVersion:	10.6.2
</pre>
</div>
<p>For example, I recently wrote a simple script to generate a set of <a href="http://en.wikipedia.org/wiki/Uuid">UUID</a> using the <code>uuidgen</code> utility. OS X and Centos versions of <code>uuidgen</code> take very different parameters.</p>
<p>Of course they do.</p>
<p>Centos <code>uuid</code> manpage</p>
<div class="terminal">
<pre>
UUIDGEN(1)                                                 UUIDGEN(1)

NAME
       uuidgen - command-line utility to create a new UUID value

SYNOPSIS
       uuidgen [ -r | -t ]
  ...
</pre>
</div>
<p>I like to use the <code>uuidgen -r</code> option to explicitly generate a random-based UUID. It&#8217;s not strictly necessary as this is the default behavior. Still, I like to put it in. That&#8217;s just me. OS X doesn&#8217;t have this option. Oh, well.</p>
<p>OS X <code>uuidgen</code> manpage</p>
<div class="terminal">
<pre>
UUIDGEN(1)           BSD General Commands Manual           UUIDGEN(1)

NAME
     uuidgen -- generates new UUID strings

SYNOPSIS
     uuidgen [-hdr]
  ...
</pre>
</div>
<p>Next up, OS X generates UUID in upper case whereas Centos generates UUID in lower case.</p>
<div class="terminal">
<pre>
centos $ <span style="color: green;">uuidgen</span>
18722f8e-14cd-41fb-a63e-af9ff1c287ce
</pre>
</div>
<div class="terminal">
<pre>
osx $ <span style="color: green;">uuidgen</span>
81AE9EAC-0B8B-4DB9-B262-76AA8C285DD6
</pre>
</div>
<p>Again, not really a big deal but I like consistency. Easy to fix with a pipe and <code>tr</code>.</p>
<div class="terminal">
<pre>
osx $ <span style="color: green;">uuidgen | tr [:upper:] [:lower:]</span>
62a4d6b9-e0a9-4996-9e71-e7291158b700
</pre>
</div>
<p>But I needed a set of UUID. A simple loop would suffice.</p>
<div class="terminal">
<pre>
centos $ <span style="color: green;">for i in `seq 1 4`; do uuidgen | tr [:upper:] [:lower:]; done</span>
408bf1d7-80a6-41ee-8a75-f7bbb5b65dd7
ae5e0aa4-f0b2-48ff-9cfe-ab99fb37b5c7
7e0a7e69-364d-4259-9b3f-83d448e9b591
e1d1b257-974e-4754-a6d3-fe4566b55c93
</pre>
</div>
<div class="terminal">
<pre>
osx $ <span style="color: green;">for i in `seq 1 4`; do uuidgen | tr [:upper:] [:lower:]; done</span>
-bash: seq: command not found
</pre>
</div>
<p>Drat! No <code>`seq 1 4`</code> in OS X.</p>
<p>Okay. Use the alternate form to declare a sequence.</p>
<div class="terminal">
<pre>
osx $ <span style="color: green;">for i in {1..4}; do uuidgen | tr [:upper:] [:lower:]; done</span>
c861326b-bde8-4198-b45a-6bfb7016addb
ef813568-5d3d-4587-a170-8aab798fd83b
21fe8562-1511-4fd4-bd37-71b43c32e013
acb10051-9af8-42b8-9ac9-54010ad71d07
</pre>
</div>
<p>and verifiy that it also works on Centos.</p>
<div class="terminal">
<pre>
centos $ <span style="color: green;">for i in {1..4}; do uuidgen | tr [:upper:] [:lower:]; done</span>
93c68aba-cbe5-4b79-a1cc-e00eaae0527a
c564a4f4-9d39-4d2d-8762-4ba506c97de8
f694000b-d2cc-4b31-aabd-c3facd13b081
86466e00-3948-45f7-9090-09ab816b8fb6
</pre>
</div>
<p>Would ruby be easier? Probably not for this simple hack.</p>
<p>If I knew ruby better, dropping into irb would be just as easy as bash oneliners. But there would be other problems. For example, &#8220;Which ruby?&#8221;</p>
<div class="terminal">
<pre>
centos $ <span style="color: green;">ruby -v</span>
ruby 1.9.1p376 (2009-12-07 revision 26041) [x86_64-linux]
</pre>
</div>
<div class="terminal">
<pre>
osx $ <span style="color: green;">ruby -v</span>
ruby 1.8.7 (2008-08-11 patchlevel 72) [universal-darwin10.0]
</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.redleopard.com/2010/03/bash-uuid-generator/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>tomcat error: clearThreadLocalMap</title>
		<link>http://www.redleopard.com/2010/03/tomcat-error-clearthreadlocalmap/</link>
		<comments>http://www.redleopard.com/2010/03/tomcat-error-clearthreadlocalmap/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 00:43:57 +0000</pubDate>
		<dc:creator>kelly</dc:creator>
				<category><![CDATA[KellyBlog]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://www.redleopard.com/?p=877</guid>
		<description><![CDATA[I&#8217;m trying to move from Tomcat 5.5.28 to Tomcat 6.0.26 for my Struts2-based webapp. I previously tried&#8211;unsuccessfully&#8211;to make the move to Tomcat 6.0.20 but had to roll back. There were problems with the underlying connection to mail that I didn&#8217;t have time to track down. I use a standard stack. $ cat /etc/redhat-release CentOS release [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m trying to move from Tomcat 5.5.28 to Tomcat 6.0.26 for my Struts2-based webapp. I previously tried&#8211;unsuccessfully&#8211;to make the move to Tomcat 6.0.20 but had to roll back. There were problems with the underlying connection to mail that I didn&#8217;t have time to track down.</p>
<p>I use a standard stack.</p>
<div class="terminal">
<pre>
$ <span style="color: green;">cat /etc/redhat-release</span>
CentOS release 5.4 (Final)

$ <span style="color: green;">/usr/sbin/httpd -v</span>
Server version: Apache/2.2.3
Server built:   Nov 12 2009 18:43:41

$ <span style="color: green;">java -version</span>
java version "1.6.0_18"
Java(TM) SE Runtime Environment (build 1.6.0_18-b07)
Java HotSpot(TM) 64-Bit Server VM (build 16.0-b13, mixed mode)

$ <span style="color: green;">ls -l /usr/local | grep tomcat</span>
… tomcat -> ./src/apache-tomcat-6.0.26
</pre>
</div>
<p>Be forewarned: I&#8217;m jotting down my notes and this seems to be the easiest place for me to find them later. If you find something unclear or missing, leave a comment and I will look into it.</p>
<p>I habitually edit and format log data to cut down on the noise and improve readability. This torques the purists. I&#8217;m not a purist. I won&#8217;t change the essentials but I will eliminate—what I consider to be—unimportant details. For example, I will replace unimportant date stamps</p>
<div class="terminal">
<pre>
Mar 11, 2010 4:30:33 PM
</pre>
</div>
<p>with a marker that&#8217;s less distracting</p>
<div class="terminal">
<pre>
$TIME
</pre>
</div>
<p>I also will wrap output so it will fit nicely in my blog. When I wrap, I will use the marker &#8220;↩&#8221;.</p>
<p>As an example, the <code>$CATALINA_HOME/logs/catalina.out</code> log entry produced upon startup:</p>
<div class="terminal">
<pre>
$TIME org.apache.catalina.core.AprLifecycleListener init
INFO: Loaded APR based Apache Tomcat Native library 1.1.20.

$TIME org.apache.catalina.core.AprLifecycleListener init
INFO: APR capabilities: IPv6 [true], sendfile [true],↩
accept filters [false], random [true].

$TIME org.apache.coyote.ajp.AjpAprProtocol init
INFO: Initializing Coyote AJP/1.3 on ajp-8009

$TIME org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 544 ms

$TIME org.apache.catalina.core.StandardService start
INFO: Starting service Catalina

$TIME org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.26

$TIME org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor host-manager.xml

$TIME org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor manager.xml

$TIME org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory ws

$TIME org.apache.coyote.ajp.AjpAprProtocol start
INFO: Starting Coyote AJP/1.3 on ajp-8009

$TIME org.apache.catalina.startup.Catalina start
INFO: Server startup in 2131 ms
</pre>
</div>
<p>So far, so good.</p>
<p>You can see from the startup entry that I am using the Tomcat Native Library. There is a nice section in <a href="http://my.safaribooksonline.com/9780596101060">Tomcat: The Definitive Guide</a> that explains why <b>not</b> to use the native library but I use it anyway.</p>
<p>You&#8217;ll also notice that I don&#8217;t listen on port 8080; Tomcat connects only to Apache httpd via mod_jk.</p>
<div class="terminal">
<pre>
# <span style="color: green;"> grep -E "8[0-9]{3}" /usr/local/tomcat/conf/server.xml</span>
&lt;Server port="8005" shutdown="SHUTDOWN"&gt;
port="8009" 

# <span style="color: green;">cat /etc/httpd/conf/workers.properties</span>
workers.tomcat_home=/usr/local/tomcat
workers.java_home=/usr/java/default
ps=/

worker.list=router

worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.lbfactor=1

worker.worker1.redirect=worker2

worker.worker2.port=8009
worker.worker2.host=localhost
worker.worker2.type=ajp13
worker.worker2.lbfactor=1

worker.worker2.activation=disabled

worker.router.type=lb
worker.router.balance_workers=worker1,worker2
</pre>
</div>
<p>Everything else is pretty standard.</p>
<p>When I go to shut down, Tomcat 6.0.26 gives me a few surprise errors.</p>
<div class="terminal">
<pre>
$TIME org.apache.coyote.ajp.AjpAprProtocol pause
INFO: Pausing Coyote AJP/1.3 on ajp-8009

$TIME org.apache.catalina.core.StandardService stop
INFO: Stopping service Catalina

$TIME org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
SEVERE: A web application created a ThreadLocal↩
  with key of type [null]↩
  (value [com.opensymphony.xwork2.inject.ContainerImpl$10@5a9b8ff9])↩
  and a value of type [java.lang.Object[]]↩
  (value [[Ljava.lang.Object;@1b0952e8])↩
  but failed to remove it when the web application was stopped.↩
  To prevent a memory leak, the ThreadLocal has been forcibly removed.

$TIME org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
SEVERE: A web application created a ThreadLocal↩
  with key of type [null]↩
  (value [com.opensymphony.xwork2.inject.ContainerImpl$10@1220b36])↩
  and a value of type [java.lang.Object[]]↩
  (value [[Ljava.lang.Object;@620e06ce])↩
  but failed to remove it when the web application was stopped.↩
  To prevent a memory leak, the ThreadLocal has been forcibly removed.

$TIME org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
SEVERE: A web application created a ThreadLocal↩
  with key of type [null]
  (value [com.opensymphony.xwork2.inject.ContainerImpl$10@1b1402c4])↩
  and a value of type [java.lang.Object[]]↩
  (value [[Ljava.lang.Object;@3ec19fbf])↩
  but failed to remove it when the web application was stopped.↩
  To prevent a memory leak, the ThreadLocal has been forcibly removed.

$TIME org.apache.coyote.ajp.AjpAprProtocol destroy
INFO: Stopping Coyote AJP/1.3 on ajp-8009
</pre>
</div>
<p>The question I have is, &#8220;Is this new or is the new listener included in the Tomcat 6 server.xml file reporting a previously missed problem?&#8221;</p>
<p>It turns out that Tomcat 6 has new listeners that detect this kind of problem.</p>
<p>&#8220;<a href="http://forum.springsource.org/showthread.php?t=84202">The new Tomcat 6 adds a series of listeners to prevent against memory leaks and one of them, is against ThreadLocals</a>.&#8221;</p>
<p>&#8220;<a href="http://old.nabble.com/Issue-while-stopping-Tomcat-6.0.24-using-java-1.6.0_18-td27821873.html">The new memory leak detection code in Tomcat has found an issue with an application that needs to be fixed</a>.&#8221;</p>
<p>This seems to be a case of an existing problem which is just now being reported.</p>
<p>I should mention that I started tomcat and immediately shut it down. My webapp did not process any http requests between startup and shutdown. That doesn&#8217;t preclude my webapp from being the culprit, though.</p>
<p>I would be happier if Tomcat and/or Struts2 (Spring?) in a future release could eliminate the SEVERE notice. There&#8217;s something unsettling about ignoring serious warnings.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.redleopard.com/2010/03/tomcat-error-clearthreadlocalmap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Can you hear me now?</title>
		<link>http://www.redleopard.com/2010/02/can-you-hear-me-now/</link>
		<comments>http://www.redleopard.com/2010/02/can-you-hear-me-now/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 15:16:45 +0000</pubDate>
		<dc:creator>kelly</dc:creator>
				<category><![CDATA[KellyBlog]]></category>
		<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://www.redleopard.com/?p=849</guid>
		<description><![CDATA[I ate too much last night. My wife had ‘girls night out’ which left me unsupervised as I made my dinner. I powered through an entire package of Johnsonville Brats. Cause and effect… I was wide awake at 2AM, bloated as a poisoned pup. Uffda! And, yes. It was worth it. “What the hell”, says [...]]]></description>
			<content:encoded><![CDATA[<p><img width="211" height="154" style="float: left; margin: 0 0.5em 0.5ex 0;" alt="package of original johnsonville brats" src="/images/johnsonville-brats.jpg" /></p>
<p>I ate too much last night. My wife had ‘girls night out’ which left me unsupervised as I made my dinner.</p>
<p>I powered through an entire package of Johnsonville Brats. Cause and effect… I was wide awake at 2AM, bloated as a poisoned pup. Uffda!</p>
<p>And, yes. It was worth it.</p>
<p>“What the hell”, says me? Good time to catch up on some random and completely unnecessary web browsing.</p>
<p>As it turns out, I learned something from Leo Babauta over on <a href="http://zenhabits.net/2010/02/on-minimalism/">zenhabits.net</a>. I had for years considered myself a minimalist. Whether other people agreed or not is irrelevant. It was my self-view. Leo brings up a good point, “[minimalism is] basically an extension of simplicity — not only do you take things from complex to simple, but you try to get rid of anything that’s unnecessary. All but the essential.”</p>
<p>It&#8217;s a nice distinction. I have some things that are unnecessary but I won&#8217;t jettison them until they becomes a nuisance. Not many things. Just some things. It’s more accurate to say, “I’m a practitioner of simplicity.”</p>
<p>Simplicity and minimalism are very closely related but not exactly the same. So, why split hairs? Because definitions are important. It&#8217;s how we see the world. Crisp, distinct definitions lead to a clear view of the world. Fuzzy definitions lead to a fuzzy view. Non-existent definitions lead to blind spots, things out there in the world that you simply cannot see.</p>
<p>I never thought about the importance of definitions much until 1995 when I read <a href="http://www.amazon.com/Non-Designers-Design-Book-Robin-Williams/dp/0321534042">The Non-Designer&#8217;s Design Book</a> by Robin Williams. Robin describes in chapter one—The Joshua Tree Epiphany—her experience on Christmas when she received a tree identification book. In this book was a description of a Joshua tree, a strange desert dwelling plant. She was sure she had never seen one until later that day. In the cul-de-sac where her parents lived were four houses with Joshua Trees in the front yard. Robin hadn&#8217;t seen her neighbors’ Joshua trees for thirteen years. Only when she had a definition—some way to distinguish Joshua trees from all other trees—was Robin able to see them.</p>
<p>Definitions allow us to distinguish between things and the distinctions bring _those_ things into view.</p>
<p>Distinctions matter. They affect one&#8217;s world view. But not all distinctions matter to all people. For some people, the difference between simplicity and minimalism may be irrelevant. Perhaps they are neither a practitioner of simplicity nor a minimalist and the difference between the two _is_ splitting hairs—in their world, in their experience. But in my world, in my experience, the difference _is_ important.</p>
<p>Connecting the dots. It behooves us to invest at least a modicum of interest on the definitions our friends and colleagues find important. It is the mutual set of distinctions which people hold that allows them to communicate with any degree of precision. Without a mutual set, it&#8217;s unlikely that any message will be heard. The words may be there but listener can&#8217;t hear them. Much like Robin couldn&#8217;t see the Joshua tree.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.redleopard.com/2010/02/can-you-hear-me-now/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache Directory Indexing</title>
		<link>http://www.redleopard.com/2009/12/apache-directory-indexing/</link>
		<comments>http://www.redleopard.com/2009/12/apache-directory-indexing/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 22:47:59 +0000</pubDate>
		<dc:creator>kelly</dc:creator>
				<category><![CDATA[KellyBlog]]></category>
		<category><![CDATA[httpd]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.redleopard.com/?p=812</guid>
		<description><![CDATA[Sometimes a problem persists long enough—is an irritant long enough—that I&#8217;ll burn an entire Sunday morning simply out of spite. Today&#8217;s irrational time-waste went to solving &#8220;Directory index forbidden by Options directive.&#8221; [marmaduke ~] $ cat /var/log/httpd/error_log \ &#124; grep '\[error\]' \ &#124; head -1 [Sun Dec 06 09:25:05 2009] [error] [client 192.168.2.29]↩ Directory index [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes a problem persists long enough—is an irritant long enough—that I&#8217;ll burn an entire Sunday morning simply out of spite. Today&#8217;s irrational time-waste went to solving &#8220;Directory index forbidden by Options directive.&#8221;</p>
<div class="terminal">
<pre>
[marmaduke ~] $ <span style="color: green;">cat /var/log/httpd/error_log \
 | grep '\[error\]' \
 | head -1</span>
[Sun Dec 06 09:25:05 2009] [error] [client 192.168.2.29]↩
Directory index forbidden by Options directive:↩
/var/www/documentation/public_html/
</pre>
</div>
<p>I have a development server that I use to offload work from my laptop.</p>
<div class="terminal">
<pre>
[marmaduke ~] $ <span style="color: green;">hostname</span>
marmaduke

[marmaduke ~] $ <span style="color: green;">cat /etc/redhat-release</span>
CentOS release 5.4 (Final)
</pre>
</div>
<p>Among other things, marmaduke hosts scads of apache virtual hosts, including documentation. I&#8217;ve wanted to index the documentation directory for quite sometime but never could get apache configured to auto index.</p>
<p>Every configuration problem has already been solved by someone else. A quick search (<a href="http://www.google.com/search?hl=en&#038;as_q=apache+allow+directory+index">apache+allow+directory+index</a>) yielded surprisingly consistent instructions.</p>
<p>These instructions yielded consistent failure for me. I simply could not get auto indexing to work. Until now.</p>
<p>My apache installation is a basic yum install.</p>
<div class="terminal">
<pre>
[marmaduke ~] $ <span style="color: green;">yum list | grep httpd | grep installed</span>
httpd.x86_64           2.2.3-31.el5.centos    installed
httpd-devel.x86_64     2.2.3-31.el5.centos    installed
httpd-manual.x86_64    2.2.3-31.el5.centos    installed
</pre>
</div>
<p>I&#8217;ve extracted (below) a partial listing of relevant parts from the httpd.conf file.</p>
<p>I include configuration files from two directories: module configurations in /etc/httpd/conf.d/ and all virtual host configurations in /etc/httd/conf.d/hosts/.</p>
<p>For the most part, I leave httpd.conf untouched. Note that apache runs under the user and group named &#8216;apache&#8217;.</p>
<div class="terminal">
<pre>
<span style="color: gray;"># /etc/httpd/conf/httpd.conf (partial listing)</span>
Listen 80

Include conf.d/*.conf
Include conf.d/hosts/*.conf

User apache
Group apache

ServerName marmaduke:80
UseCanonicalName Off

DocumentRoot "/var/www/html"

&lt;Directory /&gt;
    Options FollowSymLinks
    AllowOverride None
&lt;/Directory&gt;

&lt;Directory "/var/www/html"&gt;
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
&lt;/Directory&gt;

DirectoryIndex index.html index.html.var

IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable

NameVirtualHost *:80
</pre>
</div>
<p>Permissions are important.</p>
<p>I place my documentation directories in /var/www/documentation/public_html and the entire tree from /var/www/documentation downwards has the same user and group name. All directories have 755 permission and all non-directories have 644 permission.</p>
<div class="terminal">
<pre>
[marmaduke ~] $ <span style="color: green;">ll /var/www</span>
drwxr-xr-x 3 kelly apache 4096 Dec  6 09:23 documentation

[marmaduke ~] $ <span style="color: green;">ll /var/www/documentation</span>
drwxr-xr-x 7 kelly apache 4096 Dec  6 11:51 public_html

[marmaduke ~] $ <span style="color: green;">ll /var/www/documentation/public_html</span>
-rw-r--r-- 1 kelly apache 5174 Dec  6 09:33 favicon.ico
drwxr-xr-x 2 kelly apache 4096 Dec  6 09:21 icecast-2.3.2
drwxr-xr-x 3 kelly apache 4096 Dec  6 12:00 mysql-5.0
drwxr-xr-x 4 kelly apache 4096 Dec  6 11:50 mysql-5.1
drwxr-xr-x 3 kelly apache 4096 Dec  6 11:51 mysql-5.4
drwxr-xr-x 3 kelly apache 4096 Dec  6 11:51 mysql-5.5

[marmaduke ~] $ <span style="color: green;">ll /var/www/documentation/public_html/mysql-5.0</span>
drwxr-xr-x 3 kelly apache 4096 Dec  6 10:05 en
</pre>
</div>
<p>My virtual host enables indexing through the Directory directive. So far, this is consistent with most of the instructions found through web search. Yet, auto indexing still didn&#8217;t work for me.</p>
<div class="terminal">
<pre>
<span style="color: gray;"># /etc/httpd/conf.d/hosts/documentation.conf</span>
&lt;VirtualHost *:80&gt;
  DocumentRoot /var/www/documentation/public_html
  ServerName documentation.site
  Options Indexes FollowSymLinks

  &lt;Directory "/var/www/documentation/public_html"&gt;
    Options Indexes FollowSymLinks
    Order allow,deny
    Allow from all
  &lt;/Directory&gt;

  RewriteEngine on
  RewriteLogLevel 1
&lt;/VirtualHost&gt;
</pre>
</div>
<p>It turns out that there is a nastly little surprise in one of the configuration files that comes standard with the centos yum install. </p>
<p>Inside LocationMatch, there the Options directive turns off Indexes. From the apache documentation, &#8220;<b>Regardless of any access restrictions placed in &lt;Directory&gt; sections, the &lt;Location&gt; section will be evaluated last…</b>&#8221;</p>
<div class="terminal">
<pre>
<span style="color: gray;"># /etc/httpd/conf.d/welcome.conf</span>
&lt;LocationMatch "^/+$"&gt;

  # this is the culprit!
  <b>Options -Indexes</b>

  ErrorDocument 403 /error/noindex.html
&lt;/LocationMatch&gt;
</pre>
</div>
<p>Since <code>LocationMatch</code> is evaluated last, the <code>-Indexes</code> parameter disables options set in any <code>Directory</code> directive. Either changing the parameter <code>-Indexes</code> to <code>Indexes</code> or deleting the welcome.conf file will allow auto indexing (assuming the other configurations are correct).</p>
<p><img width="592" height="445" alt="screenshot of apache directory listing" src="/images/apache-directory-index.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.redleopard.com/2009/12/apache-directory-indexing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
