<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>eremite</title>
      <link>http://blog.lib.umn.edu/saintx/eremite/</link>
      <description>Research &amp; Development log for Alexander Saint Croix</description>
      <language>en</language>
      <copyright>Copyright 2008</copyright>
      <lastBuildDate>Thu, 12 Jun 2008 21:42:36 -0600</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/?v=3.33.uthink</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

            <item>
	
         <title>Beijing Olympics Video Travel Book</title>
         <description><![CDATA[<p>My friend David just assembled a very useful <a title="Beijing Olympics Video Travel Guide" href="http://www.videotravelbook.com/cgi-bin/index.pl">Beijing Olympics Video Travel Guide</a> at his website <a title="Video Travel Book" href="http://www.videotravelbook.com/cgi-bin/index.pl">videotravelbook.com</a>.  It has a set of wonderful professionally produced training videos for your iPhone, so that you can give written or spoken directions to your taxi driver (for example).  He's worked very hard on it during his many trips to Beijing to visit family in the last couple of years.  Check it out!</p>

<address>UPDATE: On July 1st, David renamed his website to <a href="http://www.kangernova.com">http://www.kangernova.com</a>, to help build his brand identity and pull away from the pack a bit.  I'm warming up to the new name, I'll admit!</address>]]></description>
         <link>http://blog.lib.umn.edu/saintx/eremite/2008/06/beijing_olympics_video_travel.html</link>
         <guid>http://blog.lib.umn.edu/saintx/eremite/2008/06/beijing_olympics_video_travel.html</guid>
         <category></category>
         <pubDate>Thu, 12 Jun 2008 21:42:36 -0600</pubDate>
      </item>
            <item>
	
         <title>Majority rule</title>
         <description><![CDATA[<p>Reading <a title="No Treason" href="http://www.lysanderspooner.org/notreason.htm">No Treason</a> by Lysander Spooner.  One salient comment:</p>

<p>"The principle that the majority have a right to rule the minority, practically resolves all government into a mere contest between two bodies of men, as to which of them shall be masters, and which of them slaves; a contest, that --- however bloody --- can, in the nature of things, never be finally closed, so long as man refuses to be a slave."</p>

<p>Sage advice, especially given the current rime-locked national discourse.  I submit that the "two party" system is actually not two parties, but a binary tree of counterweighted factions.</p>]]></description>
         <link>http://blog.lib.umn.edu/saintx/eremite/2008/05/majority_rule.html</link>
         <guid>http://blog.lib.umn.edu/saintx/eremite/2008/05/majority_rule.html</guid>
         <category>Polity</category>
         <pubDate>Thu, 15 May 2008 19:20:55 -0600</pubDate>
      </item>
            <item>
	
         <title>Google Maps doesn&apos;t play well with itself embedded.</title>
         <description><![CDATA[<p>Please forgive the headline. I just used two embedded google maps on the same page, and the second one overrides the first one.  I <em>could</em> pry apart the iframe code and fix it, but I think it nicely documents the error, so I'll leave it as is.  If you want to see my actual evening route down Franklin, select the "permalink" at the bottom of that entry.</p>]]></description>
         <link>http://blog.lib.umn.edu/saintx/eremite/2008/05/google_maps_doesnt_play_well_w.html</link>
         <guid>http://blog.lib.umn.edu/saintx/eremite/2008/05/google_maps_doesnt_play_well_w.html</guid>
         <category>Coding</category>
         <pubDate>Tue, 13 May 2008 16:43:12 -0600</pubDate>
      </item>
            <item>
	
         <title>My evening commute down Franklin</title>
         <description><![CDATA[<p>This is my evening commute down Franklin.  It's only 3.5 miles, and takes me about 15 minutes after 10PM.  The most difficult part is in-between I94 and Franklin, at the Cedar Avenue intersection.  That entire intersection is messed up something fierce.  I can usually jam down Franklin at traffic speed and make the lights--from the University it isn't a bad route at all, but the reverse course is awful due to extensive road damage on the south side of the street.  The shoulder is more like a crater field on the moon's far side.  Not a pleasant ride at all, which is part of why I skip it in the morning.</p>

<p><iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps?f=d&amp;hl=en&amp;geocode=15165664480882891855,44.962620,-93.245030%3B5388973000611112614,44.969536,-93.244074%3B5991890472519883859,44.973610,-93.225689&amp;saddr=1810+3rd+Ave+S+minneapolis&amp;daddr=E+Franklin+Ave+%4044.962620,+-93.245030+to:20th+Ave+S+%4044.969536,+-93.244074+to:44.973542,-93.230925+to:SE+Washington+Ave+%4044.973610,+-93.225689+to:2218+University+Avenue+SE+minneapolis&amp;mra=dpe&amp;mrcr=0&amp;mrsp=3&amp;sz=14&amp;via=1,2,3,4&amp;sll=44.96871,-93.24895&amp;sspn=0.049673,0.105143&amp;ie=UTF8&amp;s=AARTsJogOuwquzhlRqrG-5bYPBxuuvyC3g&amp;ll=44.97002,-93.24955&amp;spn=0.042506,0.072956&amp;t=p&amp;z=13&amp;output=embed"></iframe><br /><small><a href="http://maps.google.com/maps?f=d&amp;hl=en&amp;geocode=15165664480882891855,44.962620,-93.245030%3B5388973000611112614,44.969536,-93.244074%3B5991890472519883859,44.973610,-93.225689&amp;saddr=1810+3rd+Ave+S+minneapolis&amp;daddr=E+Franklin+Ave+%4044.962620,+-93.245030+to:20th+Ave+S+%4044.969536,+-93.244074+to:44.973542,-93.230925+to:SE+Washington+Ave+%4044.973610,+-93.225689+to:2218+University+Avenue+SE+minneapolis&amp;mra=dpe&amp;mrcr=0&amp;mrsp=3&amp;sz=14&amp;via=1,2,3,4&amp;sll=44.96871,-93.24895&amp;sspn=0.049673,0.105143&amp;ie=UTF8&amp;ll=44.97002,-93.24955&amp;spn=0.042506,0.072956&amp;t=p&amp;z=13&amp;source=embed" style="color:#0000FF;text-align:left">View Larger Map</a></small></p>]]></description>
         <link>http://blog.lib.umn.edu/saintx/eremite/2008/05/my_evening_commute_down_frankl.html</link>
         <guid>http://blog.lib.umn.edu/saintx/eremite/2008/05/my_evening_commute_down_frankl.html</guid>
         <category>UMN Community</category>
         <pubDate>Tue, 13 May 2008 16:34:35 -0600</pubDate>
      </item>
            <item>
	
         <title>The &quot;Dunn Bros&quot; Commute</title>
         <description><![CDATA[<p>This is my "Dunn Brothers" commute, in which I stop off at the Loring Park Dunns location for a cup of Joe.  It's about 4.8 miles, but feels like more because of the heavy traffic on Hennepin.  By the time I cross over Nicollet Island I'm usually flush with adrenaline.</p>

<p><iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps?f=d&amp;hl=en&amp;geocode=971049439881697238,44.965208,-93.277534%3B5107662644668126277,44.967105,-93.283824%3B10730198318044623833,44.987728,-93.257136&amp;saddr=1810+3rd+Ave+S.+Minneapolis&amp;daddr=E+18th+St+%4044.965208,+-93.277534+to:44.967895,-93.283796+to:Hennepin+Ave+E+%4044.987728,+-93.257136+to:2218+University+Ave+SE+minneapolis&amp;mra=dme&amp;mrcr=0&amp;mrsp=2&amp;sz=14&amp;via=1,2,3&amp;sll=44.965223,-93.274784&amp;sspn=0.049919,0.063257&amp;ie=UTF8&amp;s=AARTsJq41uW9pbZSP5H0LTe5EvcqpjihRA&amp;ll=44.976457,-93.257446&amp;spn=0.042501,0.072956&amp;t=p&amp;z=13&amp;output=embed"></iframe><br /><small><a href="http://maps.google.com/maps?f=d&amp;hl=en&amp;geocode=971049439881697238,44.965208,-93.277534%3B5107662644668126277,44.967105,-93.283824%3B10730198318044623833,44.987728,-93.257136&amp;saddr=1810+3rd+Ave+S.+Minneapolis&amp;daddr=E+18th+St+%4044.965208,+-93.277534+to:44.967895,-93.283796+to:Hennepin+Ave+E+%4044.987728,+-93.257136+to:2218+University+Ave+SE+minneapolis&amp;mra=dme&amp;mrcr=0&amp;mrsp=2&amp;sz=14&amp;via=1,2,3&amp;sll=44.965223,-93.274784&amp;sspn=0.049919,0.063257&amp;ie=UTF8&amp;ll=44.976457,-93.257446&amp;spn=0.042501,0.072956&amp;t=p&amp;z=13&amp;source=embed" style="color:#0000FF;text-align:left">View Larger Map</a></small></p>]]></description>
         <link>http://blog.lib.umn.edu/saintx/eremite/2008/05/the_dunn_bros_commute.html</link>
         <guid>http://blog.lib.umn.edu/saintx/eremite/2008/05/the_dunn_bros_commute.html</guid>
         <category>UMN Community</category>
         <pubDate>Tue, 13 May 2008 16:29:20 -0600</pubDate>
      </item>
            <item>
	
         <title>Debunking the conspiracy theories behind the price of oil</title>
         <description><![CDATA[<p>With recent comments among colleagues and friends and corresponding paranoia on every news show from MPR to the O'Reilly Factor finally going over the brink into outright conspiracy theory, I thought I'd try to explain in simple terms how the market and Federal Reserve policy and not "big oil corporations" are deciding the price of oil.</p>

<p>Over the next three years to six months, oil will be the best investment you can make.  Here's why.</p>

<p>An oil <em>producer</em>, "Party A", produces X number of barrels of oil per day, and places this <em>supply</em> on the local <em>market</em>.  At this marketplace, <em>buyers</em> from the United States (population 301,139,947) line up beside buyers from China (population 1,321,851,888), India (population 1,129,866,154), Europe (population 490,426,060).  </p>

<p>Party A decides to <em>put</em> the X barrels on the market at price P1.   Conversely, the buyers from these respective populations place <em>bids</em> for Y barrels of oil at price P2.  There can be a large gap between what people are willing to pay for oil, and what producers are willing to sell it for.  In this case, <em>no barrels of oil are sold</em>.</p>

<p>However, in non-oil-producing nations, especially industrialized nations, there is no option but to consume oil, or face immediate starvation and collapse.  Further, there are far more consumers than producers.  In the past, when there were fewer consumers (the U.S. and Europe alone), the buyers had more leverage on the market.  When there are only a handful of parties producing a commodity, it is called a <em>production cartel</em>.</p>

<p>In short, we need their oil more than they need our money.  And China and India need the oil as well, because their economies are growing at rates that dwarf the economies of the U.S. and Europe.</p>

<p>Further, the U.S. Dollar is worth less every day than the day before.  Our rate of monetary supply inflation is about 17% per year.  This means that for every 100 dollars that exist in the world in 2007, there are $117 in 2008, $137 in 2009,  $160 in 2010, $187 in 2011, and so forth.  The Federal Reserve controls <em>all aspects</em> of monetary policy in the United States.  It is not answerable to the United States Congress.  The President has no control over it, aside from appointing the Fed Chairman.</p>

<p>Further still, in addition to there being <em>more dollars</em> in existence, there is <em>declining supply</em> of oil.  There are very few discoveries of new oil fields in the world today.  There are few new refineries being built.  Because of well-intentioned environmental concerns, many known oil fields such as those off of the coast of Santa Barbara California and Anwar Alaska are being <em>ignored</em>.</p>

<p>Finally, consumers from industrialized nations are using <em>more energy</em> each year.  In the United States, this equates to bigger vehicles, more air travel, bigger houses, fewer marriages (which imply the need for more dwellings and more heating requirements), more computers, big screen televisions, etc.  One gulp of the atmosphere in Beijing is proof that China is quickly industrializing and using greater amounts of energy each year than the year before.  Finally, especially in the United States and Europe, existing nuclear fission plants are being <em>left to rot</em> while no new fissile plants are being built, and there is little to no funding for serious research in advanced fission or groundbreaking (nonradioactive) fusion technologies such as that being conducted by Lawrenceville Plasma and Physics.</p>

<p>Wind and solar power do not have enough <em>energy flux density</em> to perform the heavy labor needed in the real world.  Here are several examples:<br/><ol>
<li>Solar powered airplanes do not and will never exist.</li>
<li>Wind powered airplanes do not and will never exist.</li>
<li>Solar powered cars and trains are not viable technologies.</li>
<li>Solar power cells produce no energy at night.</li>
<li>Wind power doesn't work when there is no wind.</li>
<li>You cannot melt large quantities of steel with the electricity generated from solar panels.</li>
</ol></p>

<p>How long does it take for a wind-power generator to generate the energy needed to replace the energy needed to mine the iron ore and cobalt needed to make the steel its made out of?  How about the energy needed to smelt that ore, process it, shape it, and the sum combined energy needed to move the ore and the finished products to the generation site?  Consider the same question for solar cells.  <strong>Solar and wind power are net loss technologies.</strong></p>

<p>Hydrogen fuel cells suffer from a related problem.  <em>Fuel cells are batteries.  They do not produce power, but only store it in a chemical reaction.</em>  So, fuel cells are not the answer to the world's energy needs.</p>

<p>In other words, all forms of "clean energy" are actually just as filthy as burning oil and coal and using nuclear fission, because they <em>all, without exception</em> exist as <em>derivatives</em> of the real energy market.  So, solar power isn't self supportive.  Neither is wind power.  They're nice ways to light up a home and provide widespread lightweight offsets to energy consumption, but they don't offset their requisite manufacturing cost.  Industrial society is not currently possible without oil, coal and nuclear power.  That's reality.  The oil is running out, and every new dollar makes it more expensive.  Every new mouth to feed in the world increases its price.</p>

<p>So, let's review.
<ol>
<li>The <em>price in dollars</em> of oil is a function of:
  <ul>
    <li>international supply of oil</li>
    <li>international demand for oil</li>
    <li>the supply of dollars available with which to purchase the oil</li>
    <li>the supply of other currencies available to purchase the oil</li>
    <li>the availability of other forms of usable energy</li>
  </ul></li>
<li>The United States congress does not control the price of oil.</li>
<li>Hillary Clinton, Barack Obama and John McCain do not control the price of oil.</li>
<li>There is no conspiracy to hike up the price of oil.</li>
<li>In order to halt US Dollar price increases in energy in the U.S., we would need to either increase our own production of <em>industrially usable</em> energy by 17% per year, or reduce the rate of dollar inflation.  In addition to this, we'd need to be 100% self-sufficient in energy AND either eliminate world economic growth, OR forbid energy exports.</li>
</ol></p>

<p>What the United States as a technologically advanced society and a leader of the world should do is heavily invest in clean (non-radioactive) fusion technologies to replace aging nuclear fusion technologies such as the dense boron-hydrogen plasma fusion reactor, and move aggressively to render oil and fissile energy production obsolete.  In the meantime, we should alter our weak dollar policy, make effective use of our native coal and oil resources, and probably invest in intermediary clean fission plants.  We should build more railroads, get trucks off of the freeways, and live closer to where we work.  More people should ride bicycles for jaunts around town.  And we're going to have to do all of these things in concert in order to survive the energy reality of the 21st century.  The 20th century is over, and we can't pretend otherwise or legislate our way out of our problem.</p>

<p>The parties most capable of making many of these needed advancements are "Big Oil" and "Big Corporations".  Punishing these parties for helping keep us alive is suicidal.  Solar and wind power are only a small part of the solution.  We should get out of the way of U.S. energy companies and do what we can to help them move the ball forward.  Foreign producers have the most to lose from a new energy revolution in the United States, and that would be sweet justice, wouldn't it?</p>]]></description>
         <link>http://blog.lib.umn.edu/saintx/eremite/2008/04/debunking_the_conspiracy_theor.html</link>
         <guid>http://blog.lib.umn.edu/saintx/eremite/2008/04/debunking_the_conspiracy_theor.html</guid>
         <category>Polity</category>
         <pubDate>Sat, 26 Apr 2008 13:57:41 -0600</pubDate>
      </item>
            <item>
	
         <title>Mint Properties LLC</title>
         <description><![CDATA[<p>About 6 months ago, my apartment building in Minneapolis, which was previously owned by Stevens Court LLC was sold to Edina-based <a title="Mint Properties LLC" href="http://mintpropertiesllc.com/">Mint Properties LLC</a>.  At first I was surprised, then disappointed that I'd no longer be able to continue the successful working relationship I'd already developed with the staff at Stevens Court.  With all of the trouble we went through last winter, I was particularly concerned that there was no local office, but that our new ownership was located out of town.</p>

<p>So, I decided to wait and see.  I have not been disappointed.</p>

<p>First of all, the improvements made last year to the building have been effective in reducing crime and improving quality of life for this resident, and I imagine others.  I am filled with gratitude for the work of Jenny Carrier and her crew.  There was not an abundance of obvious criminal activity this winter, no transients sleeping in the hallways, or any of that nonsense.  Instead, we have a distinct and firm new ownership whose mettle I unfortunately had to test this winter.</p>

<p>In January, I noticed the distinct sound of a rodent in my ceiling.  I figured it was a squirrel, based on the abundance of them in the neighborhood and their repeatedly proven ability to climb up the exterior walls.  I did not, however, begin to panic, until I found an 8-inch mound of ceiling-stuff atop my refrigerator, and a clearly chewed hole in the ceiling.</p>

<p>I made several calls to the repair technicians, who over the course of about four weeks attempted to poison the squirrel, then decided to battle cold and icy conditions and effect repairs to the exterior of the building and to eventually patch and repaint my ceiling.   Throughout the whole process the repair technicians (notably Kyler) and also the telephone operators at Mint Properties have been the modicum of professionalism and respect.  In both cases that I needed to call the repair technician was on site within 30 minutes, which greatly eased my fears of having a remote management office.  They've even gone so far as to call me at work in order to keep me appraised of the progress.</p>

<p>So, following my New Year's pledge to write about things I appreciate, here's my hat off to Mint Properties.  Welcome to the neighborhood.</p>]]></description>
         <link>http://blog.lib.umn.edu/saintx/eremite/2008/04/mint_properties_llc.html</link>
         <guid>http://blog.lib.umn.edu/saintx/eremite/2008/04/mint_properties_llc.html</guid>
         <category>UMN Community</category>
         <pubDate>Thu, 24 Apr 2008 21:13:03 -0600</pubDate>
      </item>
            <item>
	
         <title>The tense relationship between JPA, enums, and generics</title>
         <description><![CDATA[<p>In the last two months, I've come to understand in excruciating detail the various tradeoffs between using generics and enums in my JPA-ready entity library.  Most recently, I've been inspired to write down some of my notes, to save myself and others some headache in the future.</p>

<p>First of all, as always, a pattern is necessary to illustrate the problems I've seen.  Consider the task of persisting a unit definition.  Here are some examples of instances of a Unit object: kilogram, second, meter, candela.</p>

<p>Clearly these objects all would benefit from having a name, description and ID field.  But consider these as well: joule, watt, newton.  Now, the first three units were SI base units.  The second three can be defined <em>in terms</em> of the first three.  For example, a newton is equal to m∙kg∙s<sup>−2</sup>.  So it becomes clear that units need to be able to be defined according to an underlying terminology.</p>

<p>So, let's say we have a Term class, with a coefficient, a radix and an exponent.  The newton Unit instance would now contain a List of three Term instances.  The first term has a coefficient of 1, a radix of the "meter" instance, and an exponent of 1.  The second term is much like the first, save for the fact that its radix is equal to the "kilogram" instance of the Unit class.  The third follows a similar pattern, but in addition to referencing the "second" Unit instance, it also has an exponent of -2.</p>

<p>Now, for consistency and convenience, we'll define base units <em>in terms</em> of themselves.  So, a "meter" instance contains a list of one Term, with a coefficient of 1, a radix of the "meter" instance, and an exponent of 1.</p>

<p>Finally, we can also give the Unit class a boolean field, in order to distinguish between base units and derived units. This very basic definition of units and terms will suffice for what I'm trying to explain.</p>

<p>Now, so far, we have two entities, Unit and Term, and a very simple Many-to-Many relationship between them.  But here's where the trouble starts.</p>

<p>Part of the purpose of capturing the concept of a Unit in an object-oriented manner is so that we can use them to create constraints on logical behavior that are more rich and efficient than we'd be able to accomplish were they mere text fields.  We also want to capture, in some way, the relationships between different units.  </p>

<p>To illustrate the first point, consider that you're writing an application where you want to add together a collection of units to determine their sum total.  Now, imagine your assumption is that you're trying to get a combined measurement of mass.  If you have an object that represents "3 kilograms" and another that represents "5 kilograms" you can easily accomplish this.  But what if in addition to these, someone slipped in an object representing "4 seconds"?  What is 3kg + 5kg + 4s?</p>

<p>Now we're dealing with <em>dimensional analysis</em>.  There are rules that stipulate, you cannot add these together.  It'll break your logic.  So, what you want to do--what you <em>need</em> to do, is to somehow capture the idea that your "kilogram" units are tied to the concept of "mass", that your "second" objects are tied to the concept of "time", that your "tesla" objects are tied to the concept of "magnetic flux density", and so forth.</p>

<p>But what are these concepts "time", "mass", "magnetic flux density", "photoelastic work", "molar entropy", and so forth?  Well, it turns out there is some fog in the answer to that question.  Depending on which poorly written wikipedia article you find, these concepts are collectively called "quantities", "dimensions", "magnitudes" or even "quantitative properties of particles".  It turns out there is no highly rigorous name for them, but since Object-Oriented programming is nothing if not nominalist and aristotelian in nature, they needed to be named.  In order not to limit my future use of the above terms, I decided against adopting any of them and named these objects according to their relationship to the Unit.  Since these concepts serve to <em>limit the scope of what the unit can be used to quantify</em>, I refer to them as the <em>Quantitative Scopes</em> of a unit.  Please, if you're a physicist studying dimensional analysis, don't be upset.</p>

<p>Because, whatever these are called, we are now straying into trouble with Java.  Case in point, how does one best represent a quantitative scope?</p>

<p>Well, generics give us one <em>tantalizing</em> option.  I'd like to be able to create a <code>new Unit&lt;Mass&gt;()</code>, and keep it in a <code>Set&lt;Unit&lt;Mass&gt;&gt;</code>.  I think this would afford me with the best and easiest way to constrain the use of these units.  However, that leaves us with the difficult problem of how "Mass" is represented.</p>

<p>We have only two options here.  Class or Interface.  Class is problematic, because every instance of "Mass" would be identical to every other.  So, it makes more sense to use Interfaces.  Ah, but herein lies the rub, because our <em>original goal</em> was to make these objects persistent.  And Interfaces, bless their bytecode, certainly do <em>not</em> fit this bill.</p>

<p>So, it seems objects are the only option.  But this, once again, leaves us with the problem of instance control.  I could rattle off 126 examples of a QuantitativeScope object, each differing from the other only in name.  But if we define each as a class, then presumably we'd have 126 database tables filled with carbon copied records, which is just not going to happen.  Thus, the quandary.  Interfaces cannot be made persistent, but classes are the wrong instrument to accomplish the goal.</p>

<p>Well, <em>what about enums?</em>  It's an idea--an enum would nicely solve the persistence problem, but it doesn't save us on the application layer because <em>enum-valued objects cannot be used in generic fields</em>.  Furthermore, enum-valud objects <em>cannot be given generic fields themselves</em>.  This makes sense, given what enums are <em>for</em>, but it leads us back to the same problem.  How, given all three of these tools, are we to accomplish the goal of being able to discriminate easily between units of different quantitative scope while not abandoning the ability to persist the objects?</p>

<p>I came up with an ugly hack to solve this problem.  The good news is that it makes the best use of the available technology that I'm able to determine.  The bad news is that it's an <em>ugly hack</em> and it fills me with doubt about Java and JPA.  But I'm invested in making this work, so here goes:</p>

<p>First, I created a "Scope" enum, with 126 different values in it.  Scope.Mass, Scope.Time, etc.  Then, I made 126 corresponding interfaces, "Mass", "Time", etc., that extend a base "QuantitativeScope" interface.  Third, I made a generified "Graft" class that serves to bind one of these interfaces "Q extends QuantitativeScope" to one of these enum-valued objects.  Finally, I defined a library class containing 126 public abstract final instances of this "Graft" class, each mapped to the appropriate "Scope" enum-valued object.  With these graft instances, I was set.</p>

<p>Now, when defining a Unit, I can pass one of these "Graft" objects to the UnitFactory.  It can get both the generic type from this Graft object, and assign the Graft.getScope() enum-valued object to a "scope" field in the Unit class.  When I persist the Unit into JPA, the "scope" field, which is defined as @Enumerated(EnumType.STRING), goes into the database.  When I get a collection of Unit objects back out of the database, I can run them through a seive and inspect each of their Unit.getScope() values in a <code>switch</code> statement, then place them into appropriately generified Set objects.  This piece works sort of like a coin sorter, but when I'm done I can ask for the Set&lt;Unit&lt;Mass&gt;&gt; and know that my results are reliable.</p>

<p>The main problem with this workaround is that I had to duplicate a lot of data and encase it into interfaces, a large enum, <em>and</em> a graft object library in order to make it function.  There are other lingering problems with this approach as well, and I'm sure that I'll uncover more and more of them as I continue.</p>

<p>What this has taught me is that enums and generics are exceedingly tricky to use.  Although with generics, Types can now be used as compile-time constraints on behavior, they don't help you at runtime, and are therefore tough to work into a persistence application.  This worsens the intrinsic impedence mismatch between the application layer and the persistence layer in application design.  Further, enums in Java behave like pseudotypes, somewhere between Interfaces and Classes, but because they cannot be used as Generic Types, they even further aggravate the impedence mismatch when worked into a persistent application design.  If I could have used the enum valued objects in the generic fields, this would be a non-problem.</p>

<p>Finally, the best solution for my particular problem might have nothing to do with enums or generics after all.  What I'm trying to replicate through this design is actually <em>Invariants</em>, <em>Preconditions</em> and <em>Postconditions</em> on method behavior, class definitions, and collection compositions.  There are languages such as VDM-SL and Eiffel that wonderfully exemplify this sort of language feature, and old tools such as iContract that might make it useful in Java, but it's a shame that these useful tools are not built into the language itself.</p>]]></description>
         <link>http://blog.lib.umn.edu/saintx/eremite/2008/04/the_tense_relationship_between.html</link>
         <guid>http://blog.lib.umn.edu/saintx/eremite/2008/04/the_tense_relationship_between.html</guid>
         <category>CORM</category>
         <pubDate>Sat, 19 Apr 2008 13:24:11 -0600</pubDate>
      </item>
            <item>
	
         <title>Implications of persistent SI standard units</title>
         <description><![CDATA[<p>(Log of current work)</p>

<p>I'm very glad I've emphasized the creation of cascading behavior tests for CORM.   I caught a potentially very tricky issue tonight while doing so, and it relates to standardized SI base units and derived units.  Ideally, for the sake of maintainability on the database end of things, each of the SI base units would have a single row in an SIBASEUNIT table.  There are very few of these base units.  So few, in fact, that it might not even be necessary to add them to the database.  It might be better to create them as an enum and represent them as a string-valued column in another table, perhaps TERM.</p>

<p>The problem with this approach is that Term objects can also be constructed with derived units.  It shouldn't matter how people construct their Terms and Units, so long as the data is able to be kept around and made useful at a later time.</p>

<p>So, imagine this scenario:  I create a class called "SI", and it contains several hundred units.  These are all units the end user could create on their own.  SI is just a convenience class that provides a giant collection of pre-built units, and maybe even a collection of conversion contexts.  There is no reason end users could not reproduce every bit of functionality provided by this class.</p>

<p>Imagine also that I implement Unit.java in such a way that if you created two units with identical data, unit1.equals(unit2) would evaluate to true.</p>

<p>Furthermore, imagine that each Unit instance is an entity with its own ID field.  Now, imagine you call:</p>
<pre>
Unit<Mass> unit1 = SI.KILOGRAM;
Unit<Mass> unit2 = UnitFactory.baseUnit(SI.mass, "kg");
// unit1.equals(unit2) == true
</pre>

<p>This is just a pre-built unit, provided for your convenience, right?  Great.  Now, use a JPA persistence manager to push <code>unit1</code> into a database, then you'll find that <code>unit1.getID()</code> returns a <em>nonzero</em> value.   Here comes the kicker--ready for it?  <em>what happens when you persist <code>unit2</code></em>?</p>

<p>Moreover, what happens if you refer to <code>SI.KILOGRAM</code> from other classes?  Do they all now use the same object in the datastore?  Probably not.  But should they?  Maybe.  How do we tell?  What's the <em>correct</em> way to build this?</p>

<p>It's a sticky problem.  Equivalence on the logical tier might not imply equivalence in the datastore.  If we have duplication of the same data across numerous rows in the datastore, what are the implications for table efficiency, sorting, and the like?  Should I push for 3rd normal form?  How far down should I disassemble these units?</p>

<p>So, that's what I'm brooding over tonight.</p>]]></description>
         <link>http://blog.lib.umn.edu/saintx/eremite/2008/04/implications_of_persistent_si.html</link>
         <guid>http://blog.lib.umn.edu/saintx/eremite/2008/04/implications_of_persistent_si.html</guid>
         <category>CORM</category>
         <pubDate>Thu, 17 Apr 2008 22:01:05 -0600</pubDate>
      </item>
            <item>
	
         <title>Goodbye, JScience.  Hello corm-quantity</title>
         <description><![CDATA[<p>I finished stripping the JScience dependencies out of my CORM project modules, and replacing them with the new <code>corm-quantity</code> module.  Like a proud new parent, I'm very excited to see <code>corm-quantity</code> in action.  It is not perfect, but it's a good solution for a JPA-capable representation of units of measurement.  Plus, even with all its warts, the first cut of <code>corm-quantity</code> is 56k, while JScience 4.3.1 weighs in at 668k.  That's a 12-fold improvement!</p>

<p>While working on this package I learned a lot about <em>dimensional analysis</em>.  In short, dimensional analysis is a fancy way to describe the algebraic manipulation of units of measurement.  The best example I can conjure would be <a href="http://www.google.com/search?q=1+watt+%2F+1+joule">Google's unit conversion utility</a>. Or:</p>
<pre>
1 watt / 1 joule = 1 hertz
</pre>

<p>Since "1 watt" equals "1m<sup>2</sup>∙kg∙s<sup>−3</sup>", and "1 joule" equals "1m<sup>2</sup>∙kg∙s<sup>−2</sup>", "1 watt / 1 joule" equals "1m<sup>2</sup>∙kg∙s<sup>−3</sup> / 1m<sup>2</sup>∙kg∙s<sup>−2</sup>".  Or, "1m<sup>2</sup>∙kg∙s<sup>−3</sup> ∙1m<sup>-2</sup>∙kg<sup>-1</sup>∙s<sup>2</sup>".  When you really think about it this way, it's no different from "aX<sup>2</sup>∙bY<sup>3</sup> ... " </p>

<p>Each of these <em>terms</em> (1m<sup>-2</sup>, for example) is composed of a <strong>coefficient</strong>, a <strong>radix</strong>, and an <strong>exponent</strong>, just like any other algebraic term.  Once you have represented units as a name mapped to a list of these terms, you can perform simple and elegant conversions to create derivative units.  In our example above, we could perform the following transformations:</p>
<ol>
<li>Suppress all coefficients of "1", as they are redundant.  i.e., don't print them.</li>
<li>Add the exponents of terms with the same radix.</li>
<li>Any term with an exponent of 1 and a coefficient of 0 reduces to a term of <em>unity</em>, and is removed.</li>
</ol>
<p>These transformations would yield:<br/>
"m<sup>2-2</sup>∙kg<sup>1-1</sup>∙s<sup>2-3</sup>", or<br/>
"m<sup>0</sup>∙kg<sup>0</sup>∙s<sup>-1</sup>", or<br/>
"1∙1∙s<sup>-1</sup>", or<br/>
"s<sup>-1</sup>", which is the definition of<br/>
"1 hertz".</p>

<p>Now, the important part in all of this is that the <em>transformation logic</em> used to build and combine units is <em>not part of the units themselves!</em>.  It can be implemented in <em>any number</em> of packages--an entire library of useful unit building packages and pre-built unit types could be designed.  But, the bottom line is that each unit consists of the following elements:</p>
<ol>
<li>A name</li>
<li>A description</li>
<li>A symbol</li>
<li>A list of terms.</li>
</ol>

<p>Each <em>term</em> consists of:</p>
<ol>
<li>A coefficient</li>
<li>A radix, which is another unit</li>
<li>An exponent</li>
</ol>

<p>If the unit is a <em>base unit</em>, it contains exactly one term, which is self-referential.  For example, a "meter" contains the term "1 meter<sup>1</sup>".  Thus, base units are self-defined.  <em>Derived units</em>, on the other hand, are defined <em>in terms of</em> base units.  Now, with only three entities, we can represent units of all kinds.</p>

<p>Almost.</p>

<p>I found, for the sake of unit conversion, that it were best <em>for my purposes</em> to represent the coefficient as a rational number.  This helps reduce the risk of overflow during unit conversions.  I struggled for a long time trying to determine the best way to implement this, including using Number and permitting users to retrieve the value using <code>longValue()</code>.  However, this didn't work.  Spectacularly.  It has to do with the inability to distinguish between an integral type and a floating point type in Java.  If I could create an "Integral" object, and reliably get int, long or short out of it, that'd be great.  But with the ever-looming threat of precision loss because of floating-point multiplication, I gave up and fell back on rational representation using long numeric primitives.  Remember--my most important goal is persistence with this package.  So, is this the best way to get the job done?  <em>It depends</em>.  For my job, certainly.  So I re-jiggered a Rational implementation to use longs and brought the entity count to <em>four</em>.</p>

<p>And my work was nearly complete.  But for a few important considerations.  First, <em>unit conversion</em>.  I want to be able to represent a US pound as somehow related to a US ounce.  Now, for many units, the relationship is fixed and will never change.  However, for many other units, particularly those in a <em>market context</em>, the exchange ratio between units is in flux and subject to change.  So, I used dimensional analysis for the simplest possible answer.  I created the notion of a <em>conversion context</em> which is itself very similar to a unit.  A conversion context is just a list of terms, from which arbitrary unit transforms can be made.</p>

<p>For example, if I define a unit of "gold" with the symbol "Au" as a base unit, and a second unit, "Thorium" with the symbol "Th" as a base unit, I could create a conversion context containing the terms "1 Au<sup>1</sup>, 100 kg<sup>-1</sup>, 1 Th<sup>-1</sup>".  This essentially represents 1Au/100 Kg Th"  Now, if I multiply 200 Kg Th by this ratio, I get the result of "2 Au".  The actual formulas that provide the conversion can be written by anyone capable of high-school algebra.  The important part is that the units themselves, as well as the conversion definition, are all simple, small, and able to be persisted in an EJB3 system.</p>

<p>In order to illustrate these conversion formulas, I build a derived unit factory and provided a stub collection of SI units and simple utilities, as well as a smattering of US and British units.   And at this point I was <em>very nearly finished.</em></p>

<p>But not quite.  There was one outstanding matter, and it was more difficult than either of the above.  It involved what JScience referred to as "Quantity".  Examples of this include "length", "area", "time".  I did a <em>lot</em> of research on this in the "dimensional analysis" field, and basically boiled down the following observations:</p>

<ol>
<li>There are a LOT of names for this thing--JScience called it "quantity".  Others call it "dimension".  Still others call instances of this concept "quantitative properties of matter", or "quantitative properties of things".  I struggled between all of these names and was never satisfied until I realized that:</li>
<li>A unit is limited in the scope of what it can quantify.  A "meter" cannot quantify radiation dose absorbed or weight.  A "second" cannot quantify mass.  So "quantitative scope" seemed like a more useful name for the object.</li>
<li>Each unit should have a reference to this quantitative scope, so that units can be sorted and more efficiently searched by this field.</li>
<li>In Java, it is particularly useful to be able to say "new Unit<Mass>()", and deal units and their quantitative scope as generic types.  This is especially useful in collections.  Thus, each instance of these quantitative scopes could not be gathered into a Java enum.</li>
<li>The list of quantitative scopes is not conclusive or final.  This supports the earlier conclusion not to represent these using a Java enum.</li>
<li>If the relationship between the unit and its quantitative scope is to persist, each type (area, length, time, etc.) cannot be interfaces.  Interfaces cannot be persisted with JPA.</li>
<li>Thus, the only option is to represent each of these which is currently known as its own class object.</li>
<li>I found 48 of them by digging online.</li>
<li>Every instance of "area" or of "length", etc., should be identical to every other instance <em>of the same type</em>.</li>
<li>The best way to represent <em>these objects</em> is as a single table hierarchy with a discriminator column.  It's efficient, and I can use a non-generated primary key, so application-defined primary key field.</li>
</ol>

<p>These were my observations, so that's how I built the system.  It isn't as perfect or elegant as I could have written in another language or if persistence were not a requirement.  But it's pretty clean.</p>

<p>Now I can extrapolate from this and be able to represent prices of different quantitative scopes, including "money" and "product", and use it to implement a currency market or even a commodities market (or a combination of both!).  For my needs, it's a better tool.  Smaller, cleaner, JPA compatible, and it has a very clear separation between entity representation, systemization of units, and transformational logic.  No funny business under the hood, either.  Just a small, clean, OO solution for a commercial object relational model.</p>

<p>I'm going to finish some tests for it over the weekend, tag an interim release, and then write all of the JPA annotations and draft up a handful of persistence tests.  Expect news of a release very shortly.</p>]]></description>
         <link>http://blog.lib.umn.edu/saintx/eremite/2008/04/goodbye_jscience_hello_cormqua.html</link>
         <guid>http://blog.lib.umn.edu/saintx/eremite/2008/04/goodbye_jscience_hello_cormqua.html</guid>
         <category>CORM</category>
         <pubDate>Fri, 11 Apr 2008 19:32:50 -0600</pubDate>
      </item>
            <item>
	
         <title>Problems with using ATHLETE robot for a mobile lunar base</title>
         <description><![CDATA[<p>I was reading an <a href="http://www.space.com/businesstechnology/080407-technov-robot-bases.html">article about the ATHLETE robot</a> this morning, and it gave me pause to think about some of the challenges manned lunar missions will need to take into consideration.</p>

<blockquote>
<p>The ATHLETE (All-Terrain Hex-Legged Extra-Terrestrial Explorer) robot could play an essential role in new lunar bases.</p>

<p>According to NASA, the 15 ton lunar habitat would be mounted on top of the six-legged robot. The habitat could walk right off of the lunar lander, and then proceed to any desired location. Wheeled locomotion would be used for level ground; more challenging terrain could be negotiated with the full use of the flexible legs.</p>

<p>The ATHLETE-based habitat could then be controlled directly by astronauts; mission control could also direct the habitat from Earth. My favorite alternative, an autonomous robot habitat, is also slated for testing. It would use software developed for the Mars rovers Spirit and Opportunity.</p>

<p>The robot habitat would move around using power drawn from solar arrays; the maximum speed is about 10 km/hour. Although this seems slow, remember that the Moon's circumference is just 11,000 kilometers (compared to Earth's circumference of 40,000 km). Astronauts would live a nomadic existence, covering much more of the lunar surface. </p>
</blockquote>

<p>The most significant problem I can see from this is <em>solar arrays</em>.  The moon is constantly bombarded by a micrometeorite shower, with tiny flecks of metal and stone continuously bombarding the surface at speeds of 75 km/s.  This is not a friendly environment for solar arrays.  It's closer to the inside of a sand-blasting chamber, only with less sand traveling much more quickly.  Over time, the solar arrays will be scarred and eroded, which will impact their performance.</p>

<p>While we're investing billions of dollars into robotics, <a href="http://focusfusion.org">why don't we float $10 million over to the dense boron-hydrogen plasma focus fusion project</a> and revolutionize power production and propulsion systems?  The robots will need to be fed.</p>

<p>Other significant problems include the high amounts of cosmic radiation the habitat will encounter--the moon is not your friend.  Inhabitants will require a permanent structure, very likely one buried beneath the lunar regolith, in order to survive for any useful amount of time.  A machine like ATHLETE would make a better exploration and utility vehicle for carrying fuel cells, regolithic samples, and passengers.  It could be kept and maintained in a hangar between outings.</p>

<p>Still, I like to see this sort of work being done.  JAXA and NASA have a bright future on Luna, if they want it.  If not, perhaps Google.</p>
]]></description>
         <link>http://blog.lib.umn.edu/saintx/eremite/2008/04/problems_with_using_athlete_ro.html</link>
         <guid>http://blog.lib.umn.edu/saintx/eremite/2008/04/problems_with_using_athlete_ro.html</guid>
         <category></category>
         <pubDate>Fri, 11 Apr 2008 14:54:44 -0600</pubDate>
      </item>
            <item>
	
         <title>Robert Kuttner knows nothing about the Free Market</title>
         <description><![CDATA[<p>Robert Kuttner displayed his economic illiteracy in spades this week, in an <a href="http://www.boston.com/bostonglobe/editorial_opinion/oped/articles/2008/04/03/regulating_the_free_market_free_fall/">opinion piece</a> published by the Boston Globe.  His failure to recognize the role that the federal reserve plays in the market underscores a complete and utter incomprehension of Free Market thought.  He writes:</p>

<blockquote>Paulson's plan would intensify the hands-off philosophy that invited the credit crunch. He would make the Federal Reserve a superagency to monitor large financial firms and provide emergency bailouts. He would reshuffle some federal agencies - but actual regulation would be weakened. The plan proposes, "The Federal Reserve's authority to require corrective actions should be limited to instances where overall financial market stability was threatened." Other regulatory agencies are to defer to the Fed, and to "streamline" - translation: water down - existing rules.</blockquote>

<p>Now, let's dig into this.  As <a href="http://www.mises.org/store/Case-Against-the-Fed-The-P69C18.aspx?AFID=1">any</a> <a href="http://www.mises.org/story/2870">free</a> <a href="http://www.mises.org/story/2221">market</a> <a href="http://www.mises.org/story/2867">scholar</a> <a href="http://www.mises.org/resources/3189">would</a> <a href="http://www.mises.org/tag/inflation">tell</a> you, Paulson's plan to give more power to the Federal Reserve runs entirely contrary to the wishes of the Free Market's most ardent supporters.  For those of you who missed the memo, the Free Market powerhouse and poster-boy Ron Paul ran for president in 2008, amassing millions in record-setting fundraising extravaganzas by <em>promising to abolish the Federal Reserve</em>.  So, let's keep one thing clear.  The Federal Reserve obstructs the Free Market.  It is an impediment to and the primary obstacle standing in the way of the Free Market.</p>

<p>The Federal Reserve <em><a href="http://www.mises.org/story/2695">caused</a></em> the market collapse you are witnessing right now, by <em>artificially lowering</em> interest rates in 2002-2004 in order to prop up the side-winding stock markets and to spur on perceived GDP growth in advance of the 2004 elections.  They were under tremendous political pressure to do so, just as they were under tremendous political pressure to <em>arbitrarily increase</em> the prime lending rate in 2006, due to public fears over <em>inflation</em> caused by the skyrocketing supply of US Dollars in the market resulting from their easy-money policies in 2002-2004.  When <a href="http://www.mises.org/story/2863">the money dried up as a result of this increase in the interest rates</a>, housing and mortgage-backed security bubble collapsed.</p>

<p>Robert Kuttner needs to get it through his head--the government interferes with the markets.  The Fed enables financial firms to borrow money at low-risk premiums, make risky gambles with it, and all with the promise that if the gambles turn out well, these firms can keep the profits.  If the gambles fail, the Fed will bail them out, as it bailed out Bear Stern.  It's like going to the casino and knowing that if you win at slots, you keep your earnings.  If you lose, the Fed will bail you out. </p>

<p>A <em>real</em> Free Market Solution would look like the following:</p>
<li>Immediately STOP the increase in the money supply, and kill <a href="http://www.mises.org/resources/3127">inflation</a> dead in its tracks.</li>
<li>Abolish the Federal Reserve and restructure the economy around <a href="http://www.mises.org/story/2826">commodity-backed currency</a>.</li>
<li>Remove all government impediments and subsidies for commercial and economic activity of all kinds.  This means energy, defense, finance, <a href="http://mises.org/story/2937">education</a> and agriculture.</li>
<li>Remove all foreign trade agreements or other interferences of the federal government with private economic activity.  NAFTA, CAFTA, etc.</li>
<li>Enact deep cuts in taxes and potentially eliminate the income tax.</li>
<li>Let people decide how to spend the 30% of their own incomes through local and state governments, <em>if they so choose</em>, based on their own desires, needs, and wants.</li>

<p>If someone makes a bad investment, they should take the pain.  If they can't handle the pain, they'll learn not to take risks they cannot afford.  Caution and wise investment has for too long been denied its place at this nation's dinner table.  Cautious investors, more discerning and careful participants in the market deserve to be rewarded for their diligence and held up as examples of the gravity of real adult financial interactions.  Daredevils who try to exploit conditions to flip homes and drive up the prices in the market are contributing to holding back an entire generation of Americans from home ownership and raising a family.   Now the Congress wants to inject itself into contract agreements and destroy any incentive lenders have left to enable young people to buy homes.  It has to stop.</p>

<p>When the Fed comes rushing in to prop up a sagging economy, it assumes it has the <em>capability</em> of doing this.  In fact, it does not.   Its interactions as the "invisible hand" are more visible now than ever.  So, if Kuttner is going to speak up about the Free Market on the pages of a respected newspaper before a global audience, he should take care not to mischaracterize the Free Market's stance on this issue.  Many people claim to be "in favor of free market capitalism", but the system we have right now is <em>nowhere even close</em> to that system.  The constant meddling of our government and the Federal Reserve in the markets more closely approximates socialist governments they so readily scathe.</p>

<p>Nothing personal against Kuttner, but he shouldn't mischaracterize Free Market thought, or somehow try to lay the blame on precisely they who have not been listened to during this entire fiasco.  He invites even <em>more</em> interference and meddling by doing so, and aggravates the wound.</p>]]></description>
         <link>http://blog.lib.umn.edu/saintx/eremite/2008/04/robert_kuttner_knows_nothing_a.html</link>
         <guid>http://blog.lib.umn.edu/saintx/eremite/2008/04/robert_kuttner_knows_nothing_a.html</guid>
         <category></category>
         <pubDate>Mon, 07 Apr 2008 12:03:12 -0600</pubDate>
      </item>
            <item>
	
         <title>JPA-compatible alternative to JScience</title>
         <description><![CDATA[<p>I'm going to submit part of my CORM project for the Google Summer of Code.  Maybe the entire project, actually.  The goal is big enough and the end is truly within sight for this great project.</p>

<p>About five weeks ago I hit a major roadblock with my development effort on the CORM project.  JScience was not built with persistence in mind.  Now, <em>don't get me wrong</em>.  JScience is a pretty cool project, and I was certainly excited to find it last autumn.  However, <em>you should always pick the tools appropriate for your task.</em></p>

<p>My task is threefold:<br />
<ol><br />
<li>Represent arbitrary quantitative units and their relationships in a JPA compatible way.</li><br />
<li>Represent product instances, product types, and money as quantitative units.</li><br />
<li>Perform conversions via dimensional analysis using an external conversion context, such that each unit is unaware of its relationship to other units.</li><br />
</ol></p>

<p>All three points are very important to the success of my project.  JScience is geared toward real-time computing, not toward a simple and elegant JPA/EJB compatible object model.  It performs some dark arts regarding memory access and garbage collection under the hood that I do not completely understand and cannot trust in a distributed environment.  It does not decompose cleanly.  Its classes are often not extensible.  In short, <em>it is not the correct tool for my needs</em>.  It might be for yours, though.  And the developers seemed very professional.</p>

<p>So, I built a quantitative library for CORM.  I'll be showcasing it as soon as I iron out one more problem with its implementation, involving interfaces.  JPA is downright hostile toward interfaces, and why not?  They are abstract, so have nothing to persist.  The error is my own for abusing generics in lieu of a less elegant field to represent which <em>quantitative property</em> is measured by a given unit.  For example, the candela measures the quantitative property called "luminous intensity".  </p>

<p>A thorough description is beyond the scope of this entry, especially because this in this neighborhood of the physical sciences, words tend to lose their distinction.  What <em>exactly</em> is the difference between a "metric" and a "measure", and "measurement"?  What's the difference between a "quantity" and a "measurement"?  Non-trivial question, that.</p>

<p>Anyway, code is forthcoming.  Possibly over the weekend if I can get done with my VDM-SL homework done.</p>]]></description>
         <link>http://blog.lib.umn.edu/saintx/eremite/2008/04/jpacompatible_alternative_to_j.html</link>
         <guid>http://blog.lib.umn.edu/saintx/eremite/2008/04/jpacompatible_alternative_to_j.html</guid>
         <category>Open Source</category>
         <pubDate>Wed, 02 Apr 2008 19:25:00 -0600</pubDate>
      </item>
            <item>
	
         <title>If I were...</title>
         <description><![CDATA[<p>More people should use the subjunctive, because it represents hope and possibility instead of the binary modes of truth and falsehood.  "If I was younger" is an <em>ugly</em> expression.  It confuses you.  You <em>were</em> younger once, so the "if" expression always evaluates to <em>true</em>, even though the <em>intent</em> of the sentence suggests the opposite.  This is poor English, and poor communication.  It does not clearly convey your idea.  </p>

<p>Instead of this tinlike expression, use "If I were younger", "If I were home", "Wish you were here", etc.</p>

<p>If you're ever in doubt, invert the expression to test its grammatical correctness.  "Were I younger, I would...", "Were I home, I would... ", "Were you here, we could..." and so forth.  "Was I younger, I would ... " just rings leaden in the ear and illustrates how ugly the misuse of "If I was younger" types of expressions in absence of the subjunctive really are.</p>

<p>Finally, the subjunctive opens the door to an even more poetic grammatical device, which I would see spent into common circulation again in the next century: <em>the optative</em>.  It is exemplarized by John Keat's <br />
<pre><br />
Bright Star! Would I were steadfast as thou art<br />
</pre></p>

<p>"Would I were younger" is more than just a description of a hope or dream, but an explicit statement-act of hoping or dreaming.  "Would I this nation were at peace".  Now that's beautiful.  Try saying the same thing using the ugly non-grammatical English from above.  </p>

<p>"I wish this nation was at peace."  </p>

<p>Guess what? <em>It was!</em> So your wish came true.  Try again.</p>

<p>"I wish this nation was at peace again"</p>

<p>We have been at peace many times.  Try again.</p>

<p>"I wish this nation would be at peace"</p>

<p>We undoubtedly will at some distant point in the future.  Try again.  Hopefully I've expressed the practical utility of using these proper grammatical forms.  Dream big.  Conjure the subjunctive and optative in your writing.</p>]]></description>
         <link>http://blog.lib.umn.edu/saintx/eremite/2008/03/if_i_were.html</link>
         <guid>http://blog.lib.umn.edu/saintx/eremite/2008/03/if_i_were.html</guid>
         <category>Aesthetics</category>
         <pubDate>Wed, 26 Mar 2008 17:03:48 -0600</pubDate>
      </item>
            <item>
	
         <title>The Boiler Room Cafe Minneapolis: Expensive and Burned Coffee, Rude Service</title>
         <description><![CDATA[<address>UPDATE: I received an apology on April 02, 2008 from the host, which I accepted. What follows is for posterity. Part I of this can be found <a href="http://blog.lib.umn.edu/saintx/eremite/2008/03/the_boiler_room_is_the_worst_c.html">here</a></address>

<p>I haven't fully spoken my peace over the incident at the <a href="http://blog.lib.umn.edu/saintx/eremite/2008/03/the_boiler_room_is_the_worst_c.html">Boiler Room Cafe in Minneapolis</a> this morning.  I work in the service industry.  I help paying customers for a living.  So I know how to treat them.  One thing you should never do is swear at them or tell them to go elsewhere, because customers owe you nothing.  </p>

<p>You might think you've got them right where you want them--they already payed, right?  So why treat them well?  That seems to be the attitude.  The fact of the matter is that <em>you work for them</em>.  Without the customers, you don't have a business.  That doesn't mean you need to put up with abuse from customers, but it does mean that there are appropriate ways to deal with potential conflicts.</p>

<p>People don't go to coffee shops for the coffee.  I know that sounds strange, but the fact of the matter is that <strong>coffee is cheap</strong> and people can just stay home if they want a good cup of coffee.  I certainly would never go to a coffee shop if I wanted a reliably high-quality cup.  I can roast my own beans at home in my popcorn popper and have the best light roast in the state in 20 minutes if I really want to.  No, there are two things that people purchase from coffee shops.</p>

<ol>
<li>Proximity (it's a close and convenient place to get out and have a drink)</li>
<li>Atmosphere</li>
<li>Friendly Service</li>
</ol>

<p>The first item--proximity--has the weakest claim to our patronage.  Coffee shops are a dime a dozen, especially in a city like Minneapolis.  The second and third items in the list make up the bulk of the reason people go to coffee shops.  If you have bad or uncomfortable atmosphere it cancels out the motivation to leave the home in the first place.  If you have rude customer service on top of it, don't plan on being in business for too long.</p>

<p>Cafes provide a service--not a product.  People who don't like to provide good service should choose a different career path.  The Boiler Room Cafe has terrible and hostile service, which defeats the point of going out for coffee instead of enjoying a better cup at home.  I'd rather see a Dunn Brothers in the neighborhood--they have better coffee and they know how to treat customers.<br />
</p>]]></description>
         <link>http://blog.lib.umn.edu/saintx/eremite/2008/03/the_boiler_room_cafe_minneapol.html</link>
         <guid>http://blog.lib.umn.edu/saintx/eremite/2008/03/the_boiler_room_cafe_minneapol.html</guid>
         <category></category>
         <pubDate>Sun, 16 Mar 2008 16:15:58 -0600</pubDate>
      </item>
      
   </channel>
</rss>
