<?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>Evan Lenz &#187; Programming</title>
	<atom:link href="http://evanlenz.net/blog/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://evanlenz.net/blog</link>
	<description>XSLT et cetera</description>
	<lastBuildDate>Tue, 21 Dec 2010 00:49:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>What I&#8217;m doing &amp; reading</title>
		<link>http://evanlenz.net/blog/2010/12/20/what-im-doing-reading/</link>
		<comments>http://evanlenz.net/blog/2010/12/20/what-im-doing-reading/#comments</comments>
		<pubDate>Tue, 21 Dec 2010 00:49:15 +0000</pubDate>
		<dc:creator>Evan</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://evanlenz.net/blog/2010/12/20/what-im-doing-reading/</guid>
		<description><![CDATA[I thought I&#8217;d post a few updates about what I&#8217;m doing these days. My consulting business continues to be doing well, and I&#8217;m about to start a new project for a large software company, which will involve lots of heavy XSLT work. In the mean time, I&#8217;ve been learning about how to develop apps for [...]]]></description>
			<content:encoded><![CDATA[<div class='posterous_autopost'>      I thought I&#8217;d post a few updates about what I&#8217;m doing these days. My <a href="http://lenzconsulting.com">consulting business</a> continues to be doing well, and I&#8217;m about to start a new project for a large software company, which will involve lots of heavy XSLT work. In the mean time, I&#8217;ve been learning about how to develop apps for the iPhone and iPad, using a really excellent, free online course from Stanford, <a href="http://itunes.apple.com/us/itunes-u/developing-apps-for-ios-sd/id395631522">Developing Apps for iOS, by Paul Hegarty</a>. Highly recommended. I&#8217;m also gearing up to go back to school part-time to get an M.A. in Digital Arts through <a href="http://goucher.edu/madarts">Goucher College&#8217;s limited-residency/distance-learning &#8220;MADarts&#8221; program</a>. I&#8217;ll be traveling to Baltimore next month for my first residency in this brand-new program and I&#8217;m really looking forward to it.
<p />  Here are some of the computer-related books I&#8217;ve been reading lately:<br /> 
<ul>
<li><a href="http://www.amazon.com/o/ASIN/0596517742/">JavaScript: The Good Parts</a>, by Douglas Crockford</li>
<li><a href="http://www.amazon.com/o/ASIN/1934356344/">The Passionate Programmer: Creating a Remarkable Career in Software Development</a>, by Chad Fowler </li>
<li><a href="http://www.amazon.com/o/ASIN/0814742955/">Convergence Culture: Where Old and New Media Collide</a>, by Henry Jenkins</li>
</ul>
<p> JavaScript is taking over the world, so we might as well make the best of it; Crockford&#8217;s book shows that there&#8217;s a lot to be happy about as long as you take a discriminating approach. Fowler&#8217;s book has lots of nice tidbits and insights on how to be an effective software developer, especially if you&#8217;re working for someone else. And Jenkins&#8217; book is a fascinating study of how the role of media is changing in the age we live in, utilizing concepts such as &#8220;participatory culture&#8221; and &#8220;collective intelligence.&#8221; It&#8217;s obviously the most widely accessible of these books, with chapters about <i>Survivor</i>, <i>American Idol</i>, <i>The Matrix</i>, <i>Star Wars</i>, and <i>Harry Potter</i>. It&#8217;s a textbook for one of my first classes in the M.A. program, and I&#8217;m likely to blog about it some more in the future.</div>
]]></content:encoded>
			<wfw:commentRss>http://evanlenz.net/blog/2010/12/20/what-im-doing-reading/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>This blog is going to get a lot worse&#8230;</title>
		<link>http://evanlenz.net/blog/2010/12/18/this-blog-is-going-to-get-a-lot-worse/</link>
		<comments>http://evanlenz.net/blog/2010/12/18/this-blog-is-going-to-get-a-lot-worse/#comments</comments>
		<pubDate>Sun, 19 Dec 2010 06:45:24 +0000</pubDate>
		<dc:creator>Evan</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://evanlenz.net/blog/?p=195</guid>
		<description><![CDATA[&#8230;before it gets better. That&#8217;s because I am casting my perfectionist tendencies to the wind and will be trying out lots of different things. Quite reasonable questions pop up in my mind such as &#8220;Why would anyone want to read this?&#8221; and &#8220;Is this post actually going to be useful to anyone?&#8221; For the time [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230;before it gets better. That&#8217;s because I am casting my perfectionist tendencies to the wind and will be trying out lots of different things. Quite reasonable questions pop up in my mind such as &#8220;Why would anyone want to read this?&#8221; and &#8220;Is this post actually going to be useful to anyone?&#8221; For the time being, I am going to put those questions on hold. My aim, dear reader, is to get myself in the <em>habit</em> of blogging and of having an abundance mindset about all the things that I could possibly write about (especially relating to technology). I am sorry if this comes off as navel-gazing or as airing my dirty technical laundry (such as all the things I know so shockingly little about), but I am just going to have to run that risk. For my own benefit. And for the benefit of readers—if not you who are reading right now, at least the ones reading later on once I&#8217;ve <em>really</em> got my act together (as if!). In the mean time, I&#8217;ll aim to <a href="http://blogs.msdn.com/b/micahel/archive/2005/08/17/failfast.aspx">fail early and fail often</a>.</p>
<p>I&#8217;m self-employed and frankly lonely when it comes to geeking out, so I am going to start geeking out in public and see what happens. Maybe it will add an extra sense of accountability about safeguarding some of my still-unbacked-up data, or an extra level of motivation to learn more about the areas I feel deficient in. And maybe it will be intrinsically rewarding and fun. And maybe someday (I hope) I&#8217;ll start writing some things that will be interesting or useful to some readers—even if not regular readers, but someone who&#8217;s just Googling for the right solution to the problem they&#8217;re facing right now.</p>
<p>I&#8217;ve written before about my <a href="http://evanlenz.net/blog/2008/01/25/blogging-confusion/">blogging confusion</a>. But now I&#8217;ve got a little bit more focus and motivation, even if I haven&#8217;t quite articulated what it is, even to myself. For now, I can tell you it has something to do with this: <em>celebrating technology</em>.</p>
<p>Okay, that&#8217;s all. You&#8217;ve had your fair warning. <img src='http://evanlenz.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://evanlenz.net/blog/2010/12/18/this-blog-is-going-to-get-a-lot-worse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Test post from OneNote</title>
		<link>http://evanlenz.net/blog/2010/12/18/test-post-from-onenote/</link>
		<comments>http://evanlenz.net/blog/2010/12/18/test-post-from-onenote/#comments</comments>
		<pubDate>Sun, 19 Dec 2010 04:28:08 +0000</pubDate>
		<dc:creator>Evan</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://evanlenz.net/blog/2010/12/18/test-post-from-onenote/</guid>
		<description><![CDATA[This is a test post from OneNote. Let&#8217;s see how the various things look.     Here&#8217;s an outline, including some checkbox TODOs Indent level 1 unchecked Indent level 2     Here&#8217;s a table with three rows and three columns     The end. Update: Hmm. Apart from the hideous formatting-ridden HTML markup (should [...]]]></description>
			<content:encoded><![CDATA[<p style="margin-left: 19pt">This is a test post from OneNote. Let&#8217;s see how the various things look.
</p>
<p style="margin-left: 19pt"> <br />
 </p>
<p style="margin-left: 19pt">Here&#8217;s an outline, including some checkbox TODOs
</p>
<p style="margin-left: 46pt">Indent level 1 unchecked
</p>
<p style="margin-left: 73pt">Indent level 2
</p>
<p style="margin-left: 73pt"> <br />
 </p>
<div style="margin-left: 70pt">
<table style="border-collapse:collapse" border="0">
<colgroup>
<col style="width:64px"/>
<col style="width:64px"/>
<col style="width:75px"/></colgroup>
<tbody valign="top">
<tr>
<td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  solid #a3a3a3 1.0pt; border-left:  solid #a3a3a3 1.0pt; border-bottom:  solid #a3a3a3 1.0pt; border-right:  solid #a3a3a3 1.0pt">
<p>Here&#8217;s </p>
</td>
<td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  solid #a3a3a3 1.0pt; border-left:  none; border-bottom:  solid #a3a3a3 1.0pt; border-right:  solid #a3a3a3 1.0pt">
<p>a</p>
</td>
<td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  solid #a3a3a3 1.0pt; border-left:  none; border-bottom:  solid #a3a3a3 1.0pt; border-right:  solid #a3a3a3 1.0pt">
<p>table</p>
</td>
</tr>
<tr>
<td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  none; border-left:  solid #a3a3a3 1.0pt; border-bottom:  solid #a3a3a3 1.0pt; border-right:  solid #a3a3a3 1.0pt">
<p>with</p>
</td>
<td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  none; border-left:  none; border-bottom:  solid #a3a3a3 1.0pt; border-right:  solid #a3a3a3 1.0pt">
<p>three</p>
</td>
<td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  none; border-left:  none; border-bottom:  solid #a3a3a3 1.0pt; border-right:  solid #a3a3a3 1.0pt">
<p>rows</p>
</td>
</tr>
<tr>
<td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  none; border-left:  solid #a3a3a3 1.0pt; border-bottom:  solid #a3a3a3 1.0pt; border-right:  solid #a3a3a3 1.0pt">
<p>and</p>
</td>
<td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  none; border-left:  none; border-bottom:  solid #a3a3a3 1.0pt; border-right:  solid #a3a3a3 1.0pt">
<p>three</p>
</td>
<td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  none; border-left:  none; border-bottom:  solid #a3a3a3 1.0pt; border-right:  solid #a3a3a3 1.0pt">
<p>columns</p>
</td>
</tr>
</tbody>
</table>
</div>
<p style="margin-left: 73pt"> <br />
 </p>
<p style="margin-left: 46pt">The end.
</p>
<p><strong>Update:</strong> Hmm. Apart from the hideous formatting-ridden HTML markup (should I really be so surprised?), the effective formatting isn&#8217;t faithful to the original anyway. (There are extra line breaks for one thing.) This will need some work if it&#8217;s going to work at all. I suspect that using this &#8220;Send to Blog&#8221; feature will be an occasional choice at best. It was quick and easy though&#8230;I might have to look into the possibility of a hooking into the process. I should also try upgrading to Office 2010 first; maybe things have improved in this area&#8230; And I really wish Microsoft would release OneNote for the Mac, but that&#8217;s another story&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://evanlenz.net/blog/2010/12/18/test-post-from-onenote/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Basic, handy rpm commands</title>
		<link>http://evanlenz.net/blog/2010/12/17/basic-handy-rpm-commands/</link>
		<comments>http://evanlenz.net/blog/2010/12/17/basic-handy-rpm-commands/#comments</comments>
		<pubDate>Sat, 18 Dec 2010 02:13:44 +0000</pubDate>
		<dc:creator>Evan</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://evanlenz.net/blog/?p=184</guid>
		<description><![CDATA[Even though I&#8217;m comfortable on the command line (and regularly use Cygwin on Windows, and Terminal on the Mac), I haven&#8217;t used Red Hat Linux (or CentOS) since probably 2003, and so I&#8217;m not very familiar with rpm (&#8220;RPM Package Manager&#8220;, or formerly, &#8220;Red Hat Package Manager&#8221;). I started by looking at the man page, [...]]]></description>
			<content:encoded><![CDATA[<p>Even though I&#8217;m comfortable on the command line (and regularly use Cygwin on Windows, and Terminal on the Mac), I haven&#8217;t used Red Hat Linux (or CentOS) since probably 2003, and so I&#8217;m not very familiar with rpm (&#8220;<a href="http://en.wikipedia.org/wiki/RPM_Package_Manager">RPM Package Manager</a>&#8220;, or formerly, &#8220;Red Hat Package Manager&#8221;). I started by looking at the man page, which is a great way to look up a particular command-line argument but is not necessarily the best way to learn just what I need right now. For that, Google often works better, and indeed this <a href="http://www.tfug.org/helpdesk/linux/rpm.html">Quick Guide</a> fit the bill perfectly.</p>
<p>After <a href="http://evanlenz.net/blog/2010/12/15/running-and-hosting-marklogic-for-free/">installing MarkLogic Server on my new EC2 instance</a>, I wanted to poke around some. Here are the simple commands that came in handy:</p>
<dl>
<dt><tt>rpm -i MarkLogic-4.2-1.i686.rpm</tt></dt>
<dd>Installs MarkLogic from the RPM package</dd>
<dt><tt>rpm -qa</tt></dt>
<dd>Lists all the packages installed on this machine (&#8220;query all&#8221;)</dd>
<dt><tt>	rpm -qa | grep MarkLogic</tt></dt>
<dd>Searches for &#8220;MarkLogic&#8221; among that list (revealing its title as &#8220;MarkLogic-4.2-1&#8243;)</dd>
<dt><tt>	rpm -qi MarkLogic-4.2-1</tt></dt>
<dd>Shows info about this package (&#8220;query info&#8221;)</dd>
<dt><tt>	rpm -ql MarkLogic-4.2-1</tt></p>
<dd>Shows all the files created as a result of installing this package (&#8220;query list&#8221;)</dd>
</dt>
</dl>
<p>Yep, very basic and nothing to write home about. But blogging about it might help me remember. Most Unix commands have a ton of options, many of which I&#8217;ll never need. But it&#8217;s good to be able to remember some of the most common ones and only visit the man page when I need to do something unusual.</p>
]]></content:encoded>
			<wfw:commentRss>http://evanlenz.net/blog/2010/12/17/basic-handy-rpm-commands/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Back in the blogging saddle</title>
		<link>http://evanlenz.net/blog/2010/12/17/back-in-the-blogging-saddle/</link>
		<comments>http://evanlenz.net/blog/2010/12/17/back-in-the-blogging-saddle/#comments</comments>
		<pubDate>Sat, 18 Dec 2010 02:12:43 +0000</pubDate>
		<dc:creator>Evan</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://evanlenz.net/blog/?p=176</guid>
		<description><![CDATA[I&#8217;ve got lots of ideas swirling in my head about what to blog about here. Mostly they have to do with what I&#8217;m currently learning about, particularly as it relates to technology. One idea I have is to use OneNote to track what I&#8217;m doing and then publish highlights. I heavily depend on OneNote for [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve got lots of ideas swirling in my head about what to blog about here. Mostly they have to do with <em>what I&#8217;m currently learning about, particularly as it relates to technology</em>. One idea I have is to use OneNote to track what I&#8217;m doing and then publish highlights. I heavily depend on OneNote for my day-to-day work, particularly for keeping track of my daily and weekly goals and time usage. (Maybe I&#8217;ll share my approach on that sometime.) But another way I&#8217;ve used OneNote is to help keep track of what I&#8217;m doing on an even more granular basis—to the point where I&#8217;m constantly switching back into OneNote after each little step I take. Programmers often talk about their own &#8220;stack,&#8221; meaning what they&#8217;re trying to keep in their head at any given moment, but I&#8217;ve found that OneNote works great as a persistence framework for my brain—not only for long-term storage but also as a short-term way to boost my mental RAM.</p>
<p>I&#8217;m not yet blogging from within OneNote, so that will be one of the next things I&#8217;ll have to look into (and updating the website design).</p>
<p>Until then, I&#8217;ll keep posting some random things I&#8217;m learning—in a <a href="http://evanlenz.net/blog/2010/12/16/joomla-as-a-spiritual-practice/">distinctly non-comprehensive</a> way. </p>
]]></content:encoded>
			<wfw:commentRss>http://evanlenz.net/blog/2010/12/17/back-in-the-blogging-saddle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Joomla as a spiritual practice</title>
		<link>http://evanlenz.net/blog/2010/12/16/joomla-as-a-spiritual-practice/</link>
		<comments>http://evanlenz.net/blog/2010/12/16/joomla-as-a-spiritual-practice/#comments</comments>
		<pubDate>Fri, 17 Dec 2010 00:47:06 +0000</pubDate>
		<dc:creator>Evan</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Spiritual]]></category>

		<guid isPermaLink="false">http://evanlenz.net/blog/?p=166</guid>
		<description><![CDATA[I need to make a confession. I have a very low tolerance for badly designed user interfaces and overly complicated mis-uses of technology. We are using Joomla for The Trillium School website, and all I wanted to do was add a simple page announcing our Holiday Craft Camp next week. I&#8217;m sure it&#8217;s not just [...]]]></description>
			<content:encoded><![CDATA[<p>I need to make a confession. I have a very low tolerance for badly designed user interfaces and overly complicated mis-uses of technology. We are using <a href="http://www.joomla.org/">Joomla</a> for <a href="http://trilliumschool.org">The Trillium School</a> website, and all I wanted to do was add a simple page announcing our Holiday Craft Camp next week. I&#8217;m sure it&#8217;s not just Joomla&#8217;s fault; it&#8217;s also the way our designer had shoehorned everything into Joomla&#8217;s structures. But in any case, things are way harder than they need to be. I update the website just infrequently enough that I tend to forget how things work every time.</p>
<p>Well, this last time, I started to notice my blood pressure rising and decided to step back, cool off, and do some thinking. &#8220;I really don&#8217;t want to learn Joomla right now; I just want to get this page created.&#8221; I didn&#8217;t have much else that&#8217;s pressing today, so I decided to take this as an opportunity to cultivate patience. Patience is often thought of as &#8220;grinning and bearing it&#8221; or waiting reluctantly with clenched teeth. But I like this definition better: <strong>&#8220;Patience is the ability to dwell gladly in the present moment when we have some desire, or what would normally be a reason to desire, to depart from it.&#8221;</strong> (Robert C. Roberts in <a href="http://www.amazon.com/o/ASIN/0664246133/"><em>Strengths of a Christian</em></a>, p. 53)</p>
<p>One of the sources of my resistance is that I prefer to learn things comprehensively—or at least comprehensively within some well-defined range. That&#8217;s why I tend to enjoy smaller programming languages (like XSLT 1.0) and domain-specific languages. Joomla is a full-featured Web content management system with lots of bells and whistles. I&#8217;m not planning to use it for anything other than the school website I inherited. I&#8217;m not very inspired to learn it.</p>
<p>So today I found myself whining, complaining, and wanting to distract myself. This feeling caught me by surprise, because lately I&#8217;ve been really loving technology. There are so many interesting programming languages to learn, so many powerful tools and frameworks to unleash one&#8217;s creativity on. In fact, technology has been really exciting for me lately, even though it seems like it&#8217;s been years since I felt this way. I think the key for me has been <strong>gratitude</strong>. Rather than trying to hoard knowledge or get overwhelmed by all the things I won&#8217;t ever possibly learn, I somehow was able to let go of all that and begin to receive everything as a gift from God. Programming languages are part of the wonderful world we live in. I don&#8217;t have to walk in the woods (although that&#8217;s nice too) to appreciate and get excited about this planet we live on.</p>
<p>Learning things comprehensively can be useful (and fun), but I&#8217;m finding it&#8217;s not a good general policy to live by. For one thing, most things are impossible to learn comprehensively. For another, I don&#8217;t really operate this way. There are lots of technologies I merely learn just enough to &#8220;get by&#8221;—without understanding some of the fundamentals that would be required if I had to work with these technologies everyday: Ethernet networking, email protocols, DOS batch files, etc. So I&#8217;m fooling myself even when I say that&#8217;s how I prefer to learn things. There are lots of things I&#8217;m not an expert in, and that&#8217;s okay. <img src='http://evanlenz.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Joomla can be the same way; the key is to just take some notes so I can refer back to them the next time I have a task to complete. This doesn&#8217;t have to be as painful as I&#8217;m making it. There <em>is</em> an underlying logic, and I <em>can</em> learn just enough to get by, capturing the knowledge in OneNote (what a great technology!), so I can refer back to it next time and save myself a lot of headaches.</p>
]]></content:encoded>
			<wfw:commentRss>http://evanlenz.net/blog/2010/12/16/joomla-as-a-spiritual-practice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Running and hosting MarkLogic for free</title>
		<link>http://evanlenz.net/blog/2010/12/15/running-and-hosting-marklogic-for-free/</link>
		<comments>http://evanlenz.net/blog/2010/12/15/running-and-hosting-marklogic-for-free/#comments</comments>
		<pubDate>Thu, 16 Dec 2010 07:06:17 +0000</pubDate>
		<dc:creator>Evan</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://evanlenz.net/blog/?p=159</guid>
		<description><![CDATA[Over the past year, I&#8217;ve done some consulting for MarkLogic Corporation, including some development using their flagship product, MarkLogic Server. I created the back-end content management system for their Developer Community website. It was a real joy working with the software, particularly with its new support for XSLT. (You can read more about my excitement [...]]]></description>
			<content:encoded><![CDATA[<p>Over the past year, I&#8217;ve done some consulting for <a href="http://marklogic.com">MarkLogic Corporation</a>, including some development using their flagship product, MarkLogic Server. I created the back-end content management system for their <a href="http://developer.marklogic.com">Developer Community</a> website. It was a real joy working with the software, particularly with its new support for XSLT. (You can <a href="http://developer.marklogic.com/blog/guest/a-dream-come-true">read more about my excitement here</a>.)</p>
<p>Since then, I&#8217;ve toyed with the idea of creating an application for <a href="http://trilliumschool.org">The Trillium School</a> (which I&#8217;ve <a href="http://lenzonlearning.com/category/sudbury-schooling/">blogged about elsewhere</a>) to help manage <a href="http://education.change.org/blog/view/beyond_principals_sudburys_student_judicial_committee">Judicial Committee (JC) meetings</a>.</p>
<p>Since I had created a basic but flexible framework for browser-based XML editing (using HTML forms) in the <a href="https://code.google.com/p/rundmc/">RunDMC project</a>, I thought it would be nice to reuse that for the JC app for Trillium School. Now, Trillium doesn&#8217;t have a big budget, and this would be a volunteer project, so cost is a big consideration. Luckily, the free Community License for MarkLogic Server seems to fit the bill, allowing the development of non-commercial/personal applications. So licensing doesn&#8217;t appear to be an issue. Hosting, on the other hand, can be costly. Taking into consideration MarkLogic&#8217;s system requirements, we were looking at $50–100 per month for hosting fees. At that point, I decided that maybe MarkLogic was overkill for what I wanted to do.</p>
<p>Even so, I still liked the idea and was hoping to figure out a way to do it (ideally without having to host a server on campus or in my home). Then, in the last couple of days, I learned about the <a href="http://aws.amazon.com/free/">Amazon Web Services free usage tier</a>. And I came across <a href="http://blogs.avalonconsult.com/blog/generic/installing-marklogic-on-an-ec2-micro-instance-free-for-1-year/">Mike Brevoort&#8217;s immensely useful screencast</a> about how to get MarkLogic Server running on one of the Amazon EC2 &#8220;micro-instance&#8221; servers. (Mike is the <a href="http://mike.brevoort.com/2010/08/03/marklogic-demos/">one who beat me at the DemoJam earlier this year</a> but then amazingly and graciously offered me the iPad, which I then dutifully gave to my wife.) Although I had created an AWS account in the past, I had never used EC2, so I wasn&#8217;t sure what to expect, but Mike&#8217;s video made it really easy and I had MarkLogic up and running on CentOS within 20 minutes. Mind you, at 613MB of RAM, the micro-instance doesn&#8217;t actually meet MarkLogic&#8217;s official system requirements, so it&#8217;s unsupported. But for the small application I&#8217;m interested in creating (small data set with very few users accessing the site approximately once per day), it just might work. So far, the server seems to be running fine. The next step is to create the application.</p>
<p>So I&#8217;m pretty stoked about playing with this. If you&#8217;re interested in trying this out yourself, just follow the steps in Mike&#8217;s screencast: <a href="http://blogs.avalonconsult.com/blog/generic/installing-marklogic-on-an-ec2-micro-instance-free-for-1-year/">Installing MarkLogic on an EC2 Micro Instance &#8211; Free for 1 year!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://evanlenz.net/blog/2010/12/15/running-and-hosting-marklogic-for-free/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to generate GUIDs in XSLT 2.0, using Saxon.NET</title>
		<link>http://evanlenz.net/blog/2009/03/06/how-to-generate-guids-in-xslt-20-using-saxonnet/</link>
		<comments>http://evanlenz.net/blog/2009/03/06/how-to-generate-guids-in-xslt-20-using-saxonnet/#comments</comments>
		<pubDate>Fri, 06 Mar 2009 19:47:02 +0000</pubDate>
		<dc:creator>Evan</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://evanlenz.net/blog/?p=126</guid>
		<description><![CDATA[I have a project where I need to generate file names that are GUIDs. I&#8217;m using Saxon.NET. With the help of Google, I figured out how to do that, but it wasn&#8217;t immediately obvious. Hopefully this post will make the solution easier to find for other people trying to solve the same problem. This is [...]]]></description>
			<content:encoded><![CDATA[<p>I have a project where I need to generate file names that are GUIDs. I&#8217;m using Saxon.NET. With the help of Google, I figured out how to do that, but it wasn&#8217;t immediately obvious. Hopefully this post will make the solution easier to find for other people trying to solve the same problem.</p>
<p>This is just one example of a .NET function you can access as an extension function in XSLT 2.0, so a more general-purpose treatment of .NET extension functions might be more useful. (I defer to <a href="http://www.saxonica.com/documentation/extensibility/dotnetextensions.html">&#8220;Writing extension functions for .NET&#8221;</a> for that.) But if you&#8217;re like me, you spend most of your coding time within the safe, comfy confines of pure XSLT. And you do very little .NET development. So to ensure your continued comfort, here&#8217;s how you can generate a GUID in Saxon.NET (relevant parts highlighted):</p>
<pre>
&lt;xsl:stylesheet version="2.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  <strong>xmlns:guid="clitype:System.Guid?partialname=mscorlib"</strong>
  exclude-result-prefixes="guid">

  &lt;xsl:output indent="yes"/>

  &lt;xsl:template match="/">
    &lt;guids>
      &lt;guid>
        &lt;xsl:value-of select="<strong>guid:NewGuid()</strong>"/>
      &lt;/guid>
      &lt;guid>
        &lt;xsl:value-of select="<strong>guid:NewGuid()</strong>"/>
      &lt;/guid>
      &lt;guid>
        &lt;xsl:value-of select="<strong>guid:NewGuid()</strong>"/>
      &lt;/guid>
    &lt;/guids>
  &lt;/xsl:template>

&lt;/xsl:stylesheet>
</pre>
<p>Here&#8217;s an example result from applying this stylesheet (to any input document):</p>
<pre>
&lt;guids>
   &lt;guid>6dbd3a72-ad74-429d-97ca-3056e8940813&lt;/guid>
   &lt;guid>cea97da4-9de5-4fb5-a35e-ba04a0dee906&lt;/guid>
   &lt;guid>41c89105-6cf7-4fd6-b17a-ed04235a4804&lt;/guid>
&lt;/guids>
</pre>
<p>All you do is call the .NET platform&#8217;s <a href="http://msdn.microsoft.com/en-us/library/system.guid.newguid.aspx">System.Guid.NewGuid() method</a> as an extension function. The function&#8217;s namespace URI identifies for Saxon what assembly and object class you&#8217;re interested in (System.Guid in this case).</p>
<p>Thanks to M. David Peterson: I found this usage buried in a code example in his lucidly-titled blog post: <a href="http://www.oreillynet.com/xml/blog/2008/04/if_oop_fp_aop_xslt_20_then_com.html">if ((OOP + FP + AOP) == XSLT 2.0) then &#8216;Composable Language&#8217; else &#8216;Try Again&#8217;</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://evanlenz.net/blog/2009/03/06/how-to-generate-guids-in-xslt-20-using-saxonnet/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Some updates</title>
		<link>http://evanlenz.net/blog/2009/03/04/some-updates/</link>
		<comments>http://evanlenz.net/blog/2009/03/04/some-updates/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 01:10:00 +0000</pubDate>
		<dc:creator>Evan</dc:creator>
				<category><![CDATA[Piano]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://evanlenz.net/blog/?p=119</guid>
		<description><![CDATA[Short blog post, in bullet points: I&#8217;m attending SXSW Interactive very soon. PianoNinja was accepted as a semi-finalist in the ScreenBurn Game Design Competition! If my presentation is selected as a finalist, I&#8217;ll get to present a live 5-minute pitch for the judges. I&#8217;m working on a reference implementation for Inline XBRL. I had responded [...]]]></description>
			<content:encoded><![CDATA[<p>Short blog post, in bullet points:</p>
<ul>
<li>I&#8217;m attending <a href="http://sxsw.com/interactive">SXSW Interactive</a> very soon. PianoNinja was accepted as a <a href="http://sxsw.com/node/971">semi-finalist in the ScreenBurn Game Design Competition</a>! If my presentation is selected as a finalist, I&#8217;ll get to present a live 5-minute pitch for the judges.</li>
<li>I&#8217;m working on a reference implementation for Inline XBRL. I had responded to their <a href="http://www.xbrl.org/Announcements/Inline_XBRL_XSLT_RFP-2008-11-03.htm">RFP for XSLT style sheet for extracting XBRL 2.1 from HTML documents with embedded Inline XBRL</a>, and they chose my proposal. They&#8217;ve been very pleasant to work with, and the work is coming right along.</li>
<li>I&#8217;m also working on a really cool SVG and XSL-FO project, generating SVG-based flow-chart diagrams.</li>
<li>I&#8217;ve started Twittering. This may give me more excuses not to blog. So <a href="http://twitter.com/evanlenz">follow me</a>! Disclaimer: we&#8217;ll see how long it lasts.</li>
</ul>
<p>That&#8217;s all for now. See you again in 6 months. <img src='http://evanlenz.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://evanlenz.net/blog/2009/03/04/some-updates/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ninja pain</title>
		<link>http://evanlenz.net/blog/2008/01/22/ninja-pain/</link>
		<comments>http://evanlenz.net/blog/2008/01/22/ninja-pain/#comments</comments>
		<pubDate>Wed, 23 Jan 2008 07:42:09 +0000</pubDate>
		<dc:creator>Evan</dc:creator>
				<category><![CDATA[Piano]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://evanlenz.net/blog/2008/01/22/ninja-pain/</guid>
		<description><![CDATA[This is how the PianoNinja is feeling tonight after suffering a difficult blow: We had a little setback involving lost code. Ironically, this happened when I was trying to set up version control to guard against this very thing. I&#8217;ve posted a message to the user&#8217;s list for the IDE that failed to give me [...]]]></description>
			<content:encoded><![CDATA[<p>This is how the PianoNinja is feeling tonight after suffering a difficult blow:</p>
<p><img src='http://evanlenz.net/blog/wp-content/uploads/2008/01/finalninjaouch.png' alt='Out-of-sorts ninja' width="261" height="252"/></p>
<p>We had a little setback involving lost code. Ironically, this happened when I was trying to set up version control to guard against this very thing. I&#8217;ve posted a message to the user&#8217;s list for the <a href="http://www.netbeans.org">IDE</a> that failed to give me a warning before deleting all this naive user&#8217;s code, in hopes that similar mistakes by other users can be prevented. Hindsight is 20/20. I should&#8217;ve backed it up before trying to&#8230;back it up. It would also have been good to have <a href="http://www.apple.com/macosx/features/timemachine.html">Time Machine</a> set up already, but I hadn&#8217;t done that either.</p>
<p>Thankfully, I did still have an older version of the code from before I switched over to the development environment that I&#8217;m now using, so I don&#8217;t have to start <em>totally</em> all over. And you can be sure that I have already secured that code into version control on a server machine so that I can continue from now on from a solid base.</p>
<p>How bad is it? Well, we were on <a href="http://evanlenz.net/blog/2008/01/22/pianoninja-video-7-notation-consistent-note-releases/">Video #7</a>. Let&#8217;s just say we&#8217;ve now reverted back to <a href="http://evanlenz.net/blog/2008/01/07/video-3-klavarskribo-game-with-midi-keyboard/">Video #3</a>. In other words, all the code I wrote in the last two weeks is gone.</p>
<p>Maybe this is a blessing in disguise. Sure, I learned a lesson and I won&#8217;t make this mistake again. But the blessing might be that my continued dependency on MIDI files as the game&#8217;s underlying format is now that much less alluring. The MIDI crutch has been snatched out from under me. I don&#8217;t need to wrest myself from the MIDI code so I can move onto a better way. The code has wrested itself from me&#8230;</p>
<p>I was going to add bar lines tonight. Oh well, those can wait.</p>
<p>Before you know it, the ninja will be feeling better than ever.</p>
]]></content:encoded>
			<wfw:commentRss>http://evanlenz.net/blog/2008/01/22/ninja-pain/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

