<?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>johnofjack blogs!</title>
	<atom:link href="http://www.johnofjack.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.johnofjack.com/blog</link>
	<description>comics, book reviews, geekiness, movies, various whatsits....</description>
	<lastBuildDate>Tue, 31 Aug 2010 02:12:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>work work</title>
		<link>http://www.johnofjack.com/blog/2010/08/work-work/</link>
		<comments>http://www.johnofjack.com/blog/2010/08/work-work/#comments</comments>
		<pubDate>Sun, 29 Aug 2010 22:27:03 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[crazy]]></category>
		<category><![CDATA[funny]]></category>
		<category><![CDATA[insanity]]></category>
		<category><![CDATA[insanity: bureaucratic and otherwise]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[poop]]></category>

		<guid isPermaLink="false">http://www.johnofjack.com/blog/2010/08/work-work/</guid>
		<description><![CDATA[As of next week, workers @ HQ can&#8217;t come in before 11 on Sundays.
As of last week, supposedly to have been fixed this week, lights don&#8217;t come on until just before people arrive to work.
This morning it still hasn&#8217;t been fixed, so&#8211;rather than take PTO or flex time&#8211;I printed the holds as normal and went [...]]]></description>
			<content:encoded><![CDATA[<p>As of next week, workers @ HQ can&#8217;t come in before 11 on Sundays.</p>
<p>As of last week, supposedly to have been fixed this week, lights don&#8217;t come on until just before people arrive to work.</p>
<p>This morning it still hasn&#8217;t been fixed, so&#8211;rather than take PTO or flex time&#8211;I printed the holds as normal and went around around pulling them in the dark.  It was annoying, and slower, but not impossible&#8211;at least, I&#8217;m sure I found everything that there was to find, and I&#8217;m also sure that we still got done in a reasonable amount of time.</p>
<p>When X came in, the first thing she said was &#8220;Something wrong with the lights?&#8221;</p>
<p>I&#8217;m amused and amazed that X, whom I&#8217;ve long considered crazy, immediately and correctly identified it as silly for the lights to be out on purpose when people are scheduled to work.</p>
<p>Later, on the desk, I told Victoria about it.  And Victoria told me that yesterday, as she was having a vegan sandwich, some kid crapped on the floor in YS and X came up to her while she (Victoria) was eating to show her the poop.  I&#8217;m laughing about it, at first thinking X&#8217;s like a kid who just got potty trained, running off with her plastic toilet bowl&#8211;&#8221;Mommy, look!&#8221;</p>
<p>And it just gets funnier: X, who thinks it&#8217;s perfectly acceptable to pick up poop and walk around with it in her hand, thinks it isn&#8217;t acceptable to have people working in the dark.  If I were the person who made that decision I&#8217;d be calling around desperately trying to set up a psychiatrist appointment: &#8220;No, I can&#8217;t tell you what&#8217;s bringing me in, sorry.  Can you just&#8211;test me for everything?&#8221;</p>
<p>Later still it&#8217;s even funnier: Victoria always takes lunch in the lounge, so X had to punch in the code to the back door out of YS, with poop in her other hand hand, pull the door open, let go, and grab the handle with that same non-poopy hand (or maybe stop the door with her foot), and walk down the hall to show Victoria&#8211;but Victoria saw her coming, obviously excited about something, and correctly deduced she didn&#8217;t want to hear about it, so she packed up her lunch and hid in the bathroom.  Yet still X came into the bathroom to try to talk to Victoria about it, and there she was still when Victoria decided it was safe to leave the latrine.</p>
<p>Later still it&#8217;s even funnier: they were in such a hurry for Y to move on&#8211;Y, who has the interpersonal skills of a Doberman but is fairly reasonable&#8211;but they&#8217;ll go to the mat for X.</p>
<p><em>edit</em>: corrected location, removed incorrect paragraph per Victoria&#8217;s clarification on Facebook.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.johnofjack.com/blog/2010/08/work-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dr. Odocha&#8217;s practice</title>
		<link>http://www.johnofjack.com/blog/2010/05/dr-odochas-practice/</link>
		<comments>http://www.johnofjack.com/blog/2010/05/dr-odochas-practice/#comments</comments>
		<pubDate>Sat, 29 May 2010 18:03:40 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[doctors]]></category>
		<category><![CDATA[health care]]></category>
		<category><![CDATA[medicine]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[prescriptions]]></category>

		<guid isPermaLink="false">http://www.johnofjack.com/blog/2010/05/dr-odochas-practice/</guid>
		<description><![CDATA[Monday. last week: I go to get a refill of maintenance meds.  Walgreen&#8217;s says they are out of refills on it and they&#8217;ll FAX a request for refill authorization.
Wednesday: I see, at work, that I&#8217;ve gotten a message from Walgreen&#8217;s.  I assume it&#8217;s saying that they&#8217;ve refilled the scrip and I should come [...]]]></description>
			<content:encoded><![CDATA[<p>Monday. last week: I go to get a refill of maintenance meds.  Walgreen&#8217;s says they are out of refills on it and they&#8217;ll FAX a request for refill authorization.<br />
Wednesday: I see, at work, that I&#8217;ve gotten a message from Walgreen&#8217;s.  I assume it&#8217;s saying that they&#8217;ve refilled the scrip and I should come pick it up.  I go after work to pick it up.  They say they haven&#8217;t gotten a response to the FAX.<br />
Thursday: I go again, after work, to pick up the prescription.  They still haven&#8217;t gotten a response to the FAX.<br />
Friday: I&#8217;m out of one of the two medicines.  10:00 a.m. I go to Dr. Odocha&#8217;s, assuming that&#8211;for whatever reason&#8211;they want me to visit before they&#8217;ll refill it.  They can&#8217;t fit me in.  The lady at the desk tells me that she&#8217;ll have the doctor call in the prescription.  I walk down to the Walgreen&#8217;s and see if they&#8217;ve called it in yet.  They haven&#8217;t.  They say they can give me a three-day supply but that&#8217;s all they can do right now.  I take it, take the day&#8217;s pill out on the sidewalk, go home, decide I&#8221;ll check in later and that if, by the end of the workday, the scrip still isn&#8217;t called in, that I&#8217;m done with this doctor.<br />
Saturday afternoon, 1:30: Walgreen&#8217;s says they still haven&#8217;t gotten authorization to fill the prescription and that they have, in addition to FAXing the doctor&#8217;s office, also sent an email requesting a refill.  I have one more pill, which will get me through Sunday but won&#8217;t help me any on Monday when everything&#8217;s closed, or on Tuesday morning, when the doctor&#8217;s office isn&#8217;t yet open.<br />
Saturday afternoon, 1:45: I find online how to make Skype make the button-pressing noises, call my doctor, press &#8220;2&#8243; to get the on-call doctor, instead get an answering machine, leave a message, wonder what to do if still no one calls in the scrip.  I decide that I may split the pill roughly in two, since half the medicine on Sunday and Monday is probably better than none on Monday.  Tuesday I&#8217;ll probably just gump along trying to be decent to people, then pick up the meds right after work.  I wonder if this is sufficient cause to make a complaint with the AMA.  I&#8217;m not blameless in this, since I missed an appointment some time back (I&#8217;d been in earlier than the appointment because I was sick) but didn&#8217;t call or anything, and each time Walgreen&#8217;s had to call in the prescription in months previous, I haven&#8217;t bothered to make another appointment, thinking it superfluous since nothing had changed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.johnofjack.com/blog/2010/05/dr-odochas-practice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>on seeing half a movie</title>
		<link>http://www.johnofjack.com/blog/2010/04/on-seeing-half-a-movie/</link>
		<comments>http://www.johnofjack.com/blog/2010/04/on-seeing-half-a-movie/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 23:37:54 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[films]]></category>
		<category><![CDATA[gospel according to matthew]]></category>
		<category><![CDATA[gospel according to st. matthew]]></category>
		<category><![CDATA[liberal guilt]]></category>
		<category><![CDATA[movies]]></category>
		<category><![CDATA[realism]]></category>
		<category><![CDATA[slumdog millionaire]]></category>

		<guid isPermaLink="false">http://www.johnofjack.com/blog/?p=138</guid>
		<description><![CDATA[For years&#8211;before I had Netflix, before Netflix even existed&#8211;I looked all over town for a film that came highly recommended called The Gospel According to Matthew.  I finally found it one day at Video Rodeo and checked it out.  It was amazing&#8211;I was enthralled with this film like I&#8217;d been with few others. [...]]]></description>
			<content:encoded><![CDATA[<p>For years&#8211;before I had Netflix, before Netflix even existed&#8211;I looked all over town for a film that came highly recommended called <em>The Gospel According to Matthew</em>.  I finally found it one day at Video Rodeo and checked it out.  It was amazing&#8211;I was enthralled with this film like I&#8217;d been with few others.  About halfway through, Jesus came walking over the water onto land, opened his mouth to say something to Matthew, and the DVD froze.</p>
<p>I tried cleaning the disk, tried fast forwarding past the scratched part, tried to jump past it with chapter selection, tried to watch it on a different DVD player.  Nothing would make the DVD play past the halfway point.</p>
<p>Back at the store they said they&#8217;d probably never get a replacement for it&#8211;the film was available only as part of a very expensive Pasolini boxed set.  They offered me a free rental but that wasn&#8217;t what I wanted&#8211;I wanted to see the rest of the film.</p>
<p>Years later, the film has been released on its own and the library has a copy.  I checked it out some time back, brought it home, and left it on the desk, unwatched, until I had to return it.  The film was fixed in my mind as perfect film, and I was worried I&#8217;d revisit it and find that it wasn&#8217;t.</p>
<p>Today I was watching <em>Slumdog Millionaire</em>, mostly because it&#8217;s one of the very few films on the IMDb top 250 that I haven&#8217;t yet seen.  Early on I decided it was kind of predictable how all of Jamal&#8217;s trivia knowledge stemmed from various unpleasant situations in his past, and my mind began to drift off&#8211;thinking of Danny Boyle&#8217;s films, thinking of British colonialism and liberal guilt, thinking of how the film was described as a crowd pleaser but I thought it was kind of shallow.  Thinking, actually, that Jamal wouldn&#8217;t have escaped his childhood without carrying some serious baggage, and that his character would most likely be inclined towards detached hookups or clingy abusive relationships.</p>
<p>About halfway through the film, Jamal was hanging out with Latika, Salim had just left, and the DVD froze.  When the DVD unfroze, Salim was holding a group of men at gunpoint.  The DVD played another three minutes or so and froze again.</p>
<p>Nothing I try will make this DVD play all the way through.</p>
<p>I&#8217;m not sure if I&#8217;ll watch the rest of it, but in this case it&#8217;s not because I think it&#8217;s a perfect film.  Rather, it&#8217;s hitting me as a moderately entertaining watch which isn&#8217;t offering me anything new.  I feel certain that Jamal will prove himself innocent to the policeman&#8217;s satisfaction, that he will walk away with his millions, that he will find Latika, and that they will be reunited happily ever after.  I feel certain, too, that Jamal and Latika won&#8217;t be immediately robbed&#8211;by Salim or anyone else&#8211;and won&#8217;t have to deal with mountains of taxes, or mountains of bribes to various corrupt officials, that they&#8217;ll never be implicated in Amman&#8217;s death though Salim probably will, and will suffer it silently, and that the film&#8217;s ending will be superficially satisfying.</p>
<p>And I feel certain, finally, that millions of rupees are a poor compensation for a childhood of being raised in the slums, having witnessed a parent&#8217;s murder, having been tricked into childhood serfdom and barely escaping being deliberately blinded, having witnessed a second murder (even if it was of a reprehensible character), and having been tortured during questioning for having done nothing wrong.</p>
<p>I wonder if a better film might have been made with that same character, with that same background, with a resolution of not becoming rich but instead of coming to peace with the past and laying it to rest.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.johnofjack.com/blog/2010/04/on-seeing-half-a-movie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PSA: automatic formatting of holds lists</title>
		<link>http://www.johnofjack.com/blog/2010/04/psa-automatic-formatting-of-holds-lists/</link>
		<comments>http://www.johnofjack.com/blog/2010/04/psa-automatic-formatting-of-holds-lists/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 21:40:57 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[professional]]></category>
		<category><![CDATA[formatting]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[lists]]></category>
		<category><![CDATA[OPACs]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[reports]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.johnofjack.com/blog/2010/04/psa-automatic-formatting-of-holds-lists/</guid>
		<description><![CDATA[Some time back I read an article talking about how libraries all over the country were individually recreating the wheel, duplicating effort instead of building on someone else’s. There were various reasons for this mentioned: that some librarians didn’t want to feel obligated to maintain code put out in the public, that some were embarrassed [...]]]></description>
			<content:encoded><![CDATA[<p>Some time back I read an article talking about how libraries all over the country were individually recreating the wheel, duplicating effort instead of building on someone else’s. There were various reasons for this mentioned: that some librarians didn’t want to feel obligated to maintain code put out in the public, that some were embarrassed about code they considered subpar, that some workplaces didn’t allow for that sort of sharing, etc.</p>
<p>In Florida, the work done by state and county employees, as well as municipalities, is all considered in the public domain. So in a spirit of sharing, in the hopes it will help someone outside our district, here’s this code I wrote in PHP to format holds lists generated by a well-known interface to library catalogs.</p>
<p>The code is far from perfect, but on my laptop–with my laptop doing the processing, not sending the list out and waiting for a response–a 100-page report gets accepted, processed, and returned streamline in literally just a few seconds. So I’m considering it good enough to call “done” and move on.</p>
<p>The script can of course be modified or extended to fit your own needs, according to your own departmental breakdown and/or stack arrangement. The important thing is that I think it can give a starting point on how to approach the problem of overly verbose lists (it turns a 102-page report into a 66-page one).</p>
<p>With those caveats:<br />
<big><big></p>
<pre>

&lt;?php
// check whether the form's been filled out
$list = ($_POST['list']);
$dept = ($_POST['dept']);

// removing extra line breaks at beginning and end
$list = trim($list);

// checking to see if there's actually a list
if (empty($list))
	{
	header("Location: workflows.php?status=notext");
	}

else {
	print "&lt;html&gt;\n&lt;head&gt;\n";
	print "&lt;style type=\"text/css\"&gt;";
	print "body {\n    font-family:'Arial', 'Helvetica', sans-serif }";
	print "&lt;/style&gt;";
	if ( (empty($_POST['dept'])) || (!isset($_POST['dept'])) )
		{print "&lt;title&gt;Holds list: All&lt;/title&gt;";}
	elseif ($dept == 'youthserv')
		{print "&lt;title&gt;Holds list: Youth Services&lt;/title&gt;";}
	else // Adult Services
		{print "&lt;title&gt;Holds list: Adult Services&lt;/title&gt;";}
	print "&lt;/head&gt;\n&lt;body&gt;\n";
	}

$jmedia = array();
$easies = array();
$jnonfic = array();
$jfic = array();
$ya = array();

$anonfic = array();
$av = array();
$afic = array();
$avhs = array();

$detritus = array();

// removing extra spaces throughout
$list = preg_replace('/( ){2,}/', ' ', $list);

// remove repeating header
// remove HOLD PICKUP LIST
$orig = "/HOLD PICKUP LIST/";
$list = preg_replace($orig, "", $list);

// remove Production date
$orig = "/Produced ([A-Za-z]{3}) ([A-Za-z]{3}) ([0-9]{1,2}) [0-9]{2}:[0-9]{2}:[0-9]{2} ([0-9]{4})/";
// first try to store this as a variable for later output
preg_match($orig, $list, $matches);
unset ($matches[0]);
$produced = implode(" ", $matches);

// now remove Production date from header
$list = preg_replace($orig, "", $list);

// remove Production library
$orig = "/Library\:[ ]+[A-Za-z]+(\-[A-Za-z]+)?/";
$list = preg_replace($orig, "", $list);

// Converting line breaks
$list = preg_replace("/( )*\n+/", "&lt;br /&gt;", $list);

// Removing extra line breaks
$list = preg_replace("/((&lt;br \/&gt;)+\s+(&lt;br \/&gt;)+\s*)+/", "&lt;br /&gt;&lt;br /&gt;", $list);
$list = preg_replace("/&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;/", "&lt;br /&gt;&lt;br /&gt;", $list);

// to get those stray extra line breaks (tried this other ways. no go.)
$list = preg_replace("/&lt;br \/&gt;&lt;br \/&gt;[ ]+/", "&lt;br /&gt;", $list);

// Removing copy number
$list = preg_replace("/copy\:[0-9]{0,4}/", "", $list);

// Removing type
$list = preg_replace("/type\:[A-Z]{3,}(\-[A-Z]{2,})?/", "", $list);

// Removing location
$list = preg_replace("/location\:[A-Z]{4,}\s{0,}&lt;br \/&gt;\s{0,}/", "", $list);

// Removing pickup library
$list = preg_replace("/Pickup library\:[A-Z]{3,}(\-[A-Z]{2,})?/", "", $list);

// removing line break between callno. and author
$callno = '/(&lt;br \/&gt;&lt;br \/&gt;)([A-Z0-9\.\*\,#&#038;-]+)([ ][A-Z0-9\.\*\,#&#038;-]+)([ ][A-Z0-9\.\*\,#&#038;-]+)?([ ][A-Z0-9\.\*\,#&#038;-]+)?([ ][A-Z0-9\.\*\,#&#038;-]+)?([ ][A-Z0-9\.\*\,#&#038;-]+)?([ ][A-Z0-9\.\*\,#&#038;-]+)?\s?&lt;br \/&gt;/';
$replacement = '$1$2$3$4$5$6$7$8 / ';
$list = preg_replace($callno, $replacement, $list);

$listarr = explode("&lt;br /&gt;&lt;br /&gt;", $list);

// first 'if' here does branch holds
if ( (empty($_POST['dept'])) || (!isset($_POST['dept'])) ) // branch
	{
		foreach ($listarr as $key =&gt; $value)
		{
			// group jmedia
			// send off CD JAZZ so all later CD J[A-Z] are in JFic
			if (preg_match('/^CD JAZZ/', $listarr[$key]))
			{array_push($av, $listarr[$key]);}
			elseif (preg_match('/(SOFTWARE|DVD|VIDEO|CD) J[0-9]+/', $listarr[$key]))
			{array_push($jmedia, $listarr[$key]);}
			elseif (preg_match('/^(SOFTWARE|DVD|VIDEO) (E|J)/', $listarr[$key]))
			{array_push($jmedia, $listarr[$key]);}

			// group easies
			elseif (preg_match('/^E /', $listarr[$key]))
			{array_push($easies, $listarr[$key]);}
			// grabs CDs and Cassettes in area
			// must have grabbed E DVD and VHS first
			elseif (preg_match('/^([A-Z]+[ ])?E [A-Z]+/', $listarr[$key]))
			{array_push($easies, $listarr[$key]);}
			elseif (preg_match('/SNUGGLE/', $listarr[$key]))
			{array_push($easies, $listarr[$key]);}

			// group JNonfic
			elseif (preg_match('/^J[0-9]+/', $listarr[$key]))
			{array_push($jnonfic, $listarr[$key]);}
			// for the rare Jnonfic cassette.
			// CDs will be assumed in media section.
			// must have grabbed DVD and VHS nonfic first
			elseif (preg_match('/ J[0-9]+/', $listarr[$key]))
			{array_push($jnonfic, $listarr[$key]);}
			elseif (preg_match('/JBIO/', $listarr[$key]))
			{array_push($jnonfic, $listarr[$key]);}
			elseif (preg_match('/^BRAILLE J/', $listarr[$key]))
			{array_push($jnonfic, $listarr[$key]);}

			// group Jfic
			elseif (preg_match('/^J[A-Z]+/', $listarr[$key]))
			{array_push($jfic, $listarr[$key]);}
			// grab CDs and Cassettes
			// can't use just '/ J[A-Z]+'/ because
			// it grabs from all genres and callnos
			elseif (preg_match('/(CD|CASSETTE|DIGITAL|L\.P\.|TALKBOOK) J[A-Z]+/', $listarr[$key]))
			{array_push($jfic, $listarr[$key]);}

			// group YA
			elseif (preg_match('/^YA /', $listarr[$key]))
			{array_push($ya, $listarr[$key]);}
			elseif (preg_match('/ YA /', $listarr[$key]))
			{array_push($ya, $listarr[$key]);}

			// grab adult nonfic and bio
			// assumes no adult genres begin with E, J, OR Y
			elseif (preg_match('/^(\*)?BIO/', $listarr[$key]))
			{array_push($anonfic, $listarr[$key]);}
			elseif (preg_match('/^(\*)?[0-9]/', $listarr[$key]))
			{array_push($anonfic, $listarr[$key]);}

			// group adult CDs, CASSETTES, DVDs
			// grabbed CD JAZZ first
			// E, J, YA grabbed already and exited if/then
			// so it should be no problem
			elseif (preg_match('/^(CD|CASSETTE|DIGITAL|DVD|VIDEO|SOFTWARE|TALKBOOK) [A-Z]/', $listarr[$key]))
			{array_push($av, $listarr[$key]);}
			elseif (preg_match('/^(CD|CASSETTE|DIGITAL|DVD|VIDEO|SOFTWARE|TALKBOOK) (\*)?[0-9]/', $listarr[$key]))
			{array_push($av, $listarr[$key]);}

			// group adult fiction, genre, L.P., N.R., VF
			// assumes no adult genres begin with E, J, OR Y
			// BUT: E, J, YA grabbed already and exited if/then
			// so it should be no problem
			elseif (preg_match('/^((L\.P\.|N\.R\.|VF) )?[A-Z]/', $listarr[$key]))
			{array_push($afic, $listarr[$key]);}
			elseif (preg_match('/^(VF) (\*)?[0-9]/', $listarr[$key]))
			{array_push($afic, $listarr[$key]);}

			// things not grouped elsewhere
			else
			{array_push($detritus, $listarr[$key]);}
		}
	}

// this below to give E/J/YA items only.
elseif ($dept == 'youthserv')
	{
		foreach ($listarr as $key =&gt; $value)
		{
			// group E/Jmedia
			// do nothing for CD JAZZ so all later CD J[A-Z] are in JFic
			if (preg_match('/^CD JAZZ/', $listarr[$key]))
			{}
			elseif (preg_match('/(SOFTWARE|DVD|VIDEO|CD) J[0-9]+/', $listarr[$key]))
			{array_push($jmedia, $listarr[$key]);}
			elseif (preg_match('/^(SOFTWARE|DVD|VIDEO) (E|J)/', $listarr[$key]))
			{array_push($jmedia, $listarr[$key]);}

			// group easies
			elseif (preg_match('/^E /', $listarr[$key]))
			{array_push($easies, $listarr[$key]);}
			// grabs CDs and Cassettes in area
			// must have grabbed E DVD and VHS first
			elseif (preg_match('/^([A-Z]+[ ])?E [A-Z]+/', $listarr[$key]))
			{array_push($easies, $listarr[$key]);}
			elseif (preg_match('/SNUGGLE/', $listarr[$key]))
			{array_push($easies, $listarr[$key]);}

			// group JNonfic
			elseif (preg_match('/^J[0-9]+/', $listarr[$key]))
			{array_push($jnonfic, $listarr[$key]);}
			// for the rare Jnonfic cassette.
			// CDs will be assumed in media section.
			// must have grabbed DVD and VHS nonfic first
			elseif (preg_match('/ J[0-9]+/', $listarr[$key]))
			{array_push($jnonfic, $listarr[$key]);}
			elseif (preg_match('/JBIO/', $listarr[$key]))
			{array_push($jnonfic, $listarr[$key]);}
			elseif (preg_match('/^BRAILLE J/', $listarr[$key]))
			{array_push($jnonfic, $listarr[$key]);}

			// group Jfic
			elseif (preg_match('/^J[A-Z]+/', $listarr[$key]))
			{array_push($jfic, $listarr[$key]);}
			// grab CDs and Cassettes
			// can't use just '/ J[A-Z]+'/ because
			// it grabs from all genres and callnos
			elseif (preg_match('/(CD|CASSETTE|DIGITAL|L\.P\.|TALKBOOK) J[A-Z]+/', $listarr[$key]))
			{array_push($jfic, $listarr[$key]);}

			// group YA
			elseif (preg_match('/^YA /', $listarr[$key]))
			{array_push($ya, $listarr[$key]);}
			elseif (preg_match('/ YA /', $listarr[$key]))
			{array_push($ya, $listarr[$key]);}

			// officially do nothing for these, so $detritus will work
			elseif (preg_match('/^(\*)?BIO/', $listarr[$key]))
			{}
			elseif (preg_match('/^(\*)?[0-9]/', $listarr[$key]))
			{}

			// officially do nothing for these, so $detritus will work
			elseif (preg_match('/^(CD|CASSETTE|DIGITAL|DVD|VIDEO|SOFTWARE|TALKBOOK) [A-Z]/', $listarr[$key]))
			{}
			elseif (preg_match('/^(CD|CASSETTE|DIGITAL|DVD|VIDEO|SOFTWARE|TALKBOOK) (\*)?[0-9]/', $listarr[$key]))
			{}

			// officially do nothing for these, so $detritus will work
			elseif (preg_match('/^((L\.P\.|N\.R\.|VF) )?[A-Z]/', $listarr[$key]))
			{}
			elseif (preg_match('/^(VF) (\*)?[0-9]/', $listarr[$key]))
			{}

			// things not grouped elsewhere
			else
			{array_push($detritus, $listarr[$key]);}
		}
	}
else // ($dept == 'adultserv')
	{
		foreach ($listarr as $key =&gt; $value)
		{

			// CD left out:
			// must test for CD JAZZ first
			if (preg_match('/^((CASSETTE|DVD|VIDEO|L\.P\.|SOFTWARE|DIGITAL|BRAILLE) )?(E|J|YA)/', $listarr[$key]))
			{}
			elseif (preg_match('/^SNUGGLE/', $listarr[$key]))
			{}

			// grab adult nonfic and bio
			elseif (preg_match('/^(\*)?BIO/', $listarr[$key]))
			{array_push($anonfic, $listarr[$key]);}
			elseif (preg_match('/^(\*)?[0-9]/', $listarr[$key]))
			{array_push($anonfic, $listarr[$key]);}

			// group adult CDs, CASSETTES, DVDs
			// grab CD JAZZ first b/c later range skips it
			// must have seen E, J, and Y first and exited if/then
			elseif (preg_match('/^CD JAZZ/', $listarr[$key]))
			{array_push($av, $listarr[$key]);}
			elseif (preg_match('/CD (J|YA)/', $listarr[$key]))
			{}
			elseif (preg_match('/^(CD|CASSETTE|DIGITAL|DVD) [A-Z]/', $listarr[$key]))
			{array_push($av, $listarr[$key]);}
			elseif (preg_match('/^(CD|CASSETTE|DIGITAL|DVD) (\*)?[0-9]/', $listarr[$key]))
			{array_push($av, $listarr[$key]);}

			// group adult VHS, SOFTWARE, TALKBOOK, V.F.
			// must have seen E, J, and Y first and exited if/then
			elseif (preg_match('/^(VIDEO|SOFTWARE|TALKBOOK|VF) [A-D]/', $listarr[$key]))
			{array_push($avhs, $listarr[$key]);}
			elseif (preg_match('/^(VIDEO|SOFTWARE|TALKBOOK|VF) [F-I]/', $listarr[$key]))
			{array_push($avhs, $listarr[$key]);}
			elseif (preg_match('/^(VIDEO|SOFTWARE|TALKBOOK|VF) [K-X]/', $listarr[$key]))
			{array_push($avhs, $listarr[$key]);}
			elseif (preg_match('/^(VIDEO|SOFTWARE|TALKBOOK|VF) (\*)?[0-9]/', $listarr[$key]))
			{array_push($avhs, $listarr[$key]);}

			// group adult fiction, genre, L.P., N.R.
			// must have seen E, J, and Y first and exited if/then
			elseif (preg_match('/^((L\.P\.|N\.R\.) )?[A-D]/', $listarr[$key]))
			{array_push($afic, $listarr[$key]);}
			elseif (preg_match('/^((L\.P\.|N\.R\.) )?[F-I]/', $listarr[$key]))
			{array_push($afic, $listarr[$key]);}
			elseif (preg_match('/^((L\.P\.|N\.R\.) )?[K-X]/', $listarr[$key]))
			{array_push($afic, $listarr[$key]);}	

			// things not grouped elsewhere
			else
			{array_push($detritus, $listarr[$key]);}
		}
	}
// end removals

// clean up detritus so later if/then will work
$detritus = implode("&lt;br /&gt;&lt;br /&gt;", $detritus);
$detritus = trim($detritus);

	if ($dept == 'youthserv')
	{
		print "&lt;p&gt;HOLDS " . $produced . " // &lt;strong&gt;Media&lt;/strong&gt;&lt;br /&gt;\n";
		print implode("&lt;br /&gt;&lt;br /&gt;", $jmedia);
		print "\n&lt;br /&gt;&lt;br /&gt;HOLDS " . $produced . " // &lt;strong&gt;Easies&lt;/strong&gt;";
		print "&lt;br /&gt;" . implode("&lt;br /&gt;&lt;br /&gt;", $easies);
		print "\n&lt;br /&gt;&lt;br /&gt;HOLDS " . $produced . " // &lt;strong&gt;JFiction&lt;/strong&gt;";
		print "&lt;br /&gt;" . implode("&lt;br /&gt;&lt;br /&gt;", $jfic);
		print "\n&lt;br /&gt;&lt;br /&gt;HOLDS " . $produced . " // &lt;strong&gt;JNonfiction&lt;/strong&gt;";
		print "&lt;br /&gt;" . implode("&lt;br /&gt;&lt;br /&gt;", $jnonfic);
		print "\n&lt;br /&gt;&lt;br /&gt;HOLDS " . $produced . " // &lt;strong&gt;YA&lt;/strong&gt;";
		print "&lt;br /&gt;" . implode("&lt;br /&gt;&lt;br /&gt;", $ya);
		print "&lt;/p&gt;";
	}
	elseif ($dept == 'adultserv')
	{
		print "&lt;p&gt;HOLDS " . $produced . " // &lt;strong&gt;Nonfiction&lt;/strong&gt;&lt;br /&gt;\n";
		print implode("&lt;br /&gt;&lt;br /&gt;", $anonfic);
		print "\n&lt;br /&gt;&lt;br /&gt;HOLDS " . $produced . " // &lt;strong&gt;A/V&lt;/strong&gt;";
		print "&lt;br /&gt;" . implode("&lt;br /&gt;&lt;br /&gt;", $av);
		print "\n&lt;br /&gt;&lt;br /&gt;HOLDS " . $produced . " // &lt;strong&gt;Fiction&lt;/strong&gt;";
		print "&lt;br /&gt;" . implode("&lt;br /&gt;&lt;br /&gt;", $afic);
		print "\n&lt;br /&gt;&lt;br /&gt;HOLDS " . $produced . " // &lt;strong&gt;VHS&lt;/strong&gt;";
		print "&lt;br /&gt;" . implode("&lt;br /&gt;&lt;br /&gt;", $avhs);
		print "&lt;/p&gt;";
	}
	else // branch
	{
		print "&lt;p&gt;HOLDS " . $produced . " // &lt;strong&gt;E/J Media&lt;/strong&gt;&lt;br /&gt;\n";
		print implode("&lt;br /&gt;&lt;br /&gt;", $jmedia);
		print "\n&lt;br /&gt;&lt;br /&gt;HOLDS " . $produced . " // &lt;strong&gt;Easies&lt;/strong&gt;";
		print "&lt;br /&gt;" . implode("&lt;br /&gt;&lt;br /&gt;", $easies);
		print "\n&lt;br /&gt;&lt;br /&gt;HOLDS " . $produced . " // &lt;strong&gt;JFiction&lt;/strong&gt;";
		print "&lt;br /&gt;" . implode("&lt;br /&gt;&lt;br /&gt;", $jfic);
		print "\n&lt;br /&gt;&lt;br /&gt;HOLDS " . $produced . " // &lt;strong&gt;JNonfiction&lt;/strong&gt;";
		print "&lt;br /&gt;" . implode("&lt;br /&gt;&lt;br /&gt;", $jnonfic);
		print "\n&lt;br /&gt;&lt;br /&gt;HOLDS " . $produced . " // &lt;strong&gt;YA&lt;/strong&gt;";
		print "&lt;br /&gt;" . implode("&lt;br /&gt;&lt;br /&gt;", $ya);
		print "\n&lt;br /&gt;&lt;br /&gt;HOLDS " . $produced . " // &lt;strong&gt;Nonfiction&lt;/strong&gt;";
		print "&lt;br /&gt;" . implode("&lt;br /&gt;&lt;br /&gt;", $anonfic);
		print "\n&lt;br /&gt;&lt;br /&gt;HOLDS " . $produced . " // &lt;strong&gt;A/V&lt;/strong&gt;";
		print "&lt;br /&gt;" . implode("&lt;br /&gt;&lt;br /&gt;", $av);
		print "\n&lt;br /&gt;&lt;br /&gt;HOLDS " . $produced . " // &lt;strong&gt;Fiction&lt;/strong&gt;";
		print "&lt;br /&gt;" . implode("&lt;br /&gt;&lt;br /&gt;", $afic);
		print "&lt;/p&gt;";
	}

if ((!empty($detritus)) &#038;&#038; ($detritus != "&lt;br /&gt;&lt;br /&gt;"))
	{
		print "\n&lt;p&gt;&lt;strong&gt;Entries that didn't get grouped:&lt;/strong&gt;";
		print "\n&lt;br /&gt;The following items were on the holds list but couldn't be placed.";
		print "\n&lt;br /&gt;If you're seeing this message it's because there is a bug in the program.";
		print "\n&lt;br /&gt;&lt;br /&gt;Please copy everything below this line and ";
		print "&lt;a href='mailto:";
print "/* YOUR EMAIL ADDRESS GOES HERE */";
print "?subject=HOLDS " . $produced . " for ";
		if (($dept == 'youthserv') || ($dept == 'adultserv'))
			{print $dept;}
		else {print "branch";}
		print "'&gt;email it to "
print "/* YOUR NAME GOES HERE */"
print "&lt;/a&gt;.  Thank you!";
		if (($dept == 'youthserv') || ($dept == 'adultserv'))
			{
			print "&lt;br /&gt;&lt;br /&gt;\n&lt;em&gt;These items may or may not be part of your list:&lt;/em&gt;";
			}
		print "&lt;br /&gt;" . $detritus . "&lt;/p&gt;";
	}
print "&lt;/body&gt;\n&lt;/html&gt;";
</big></big>
</pre>
<p>Big thanks to AskMe for <a href="http://www.facebook.com/note_redirect.php?note_id=397019092640&#038;h=df399908c3bfe518aaf24ff909160b2e&#038;url=http%3A%2F%2Fask.metafilter.com%2F148581%2FI-need-to-write-a-macro-to-reformat-daily-reports-which-cant-be-changed-upstream-using-regex-and-global-replace">their help in figuring out how to approach this project</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.johnofjack.com/blog/2010/04/psa-automatic-formatting-of-holds-lists/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>movie annoyances</title>
		<link>http://www.johnofjack.com/blog/2010/02/movie-annoyances/</link>
		<comments>http://www.johnofjack.com/blog/2010/02/movie-annoyances/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 19:35:56 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://www.johnofjack.com/blog/?p=118</guid>
		<description><![CDATA[Ladies, if you&#8217;re ever being strangled, don&#8217;t act like a doomed heroine in a movie and attempt to push the person off you.  Instead, just poke him in the eye, especially if you have long fingernails.  On the verge of being killed is no time to be polite or squeamish.
Other movie annoyances:
Person A [...]]]></description>
			<content:encoded><![CDATA[<p>Ladies, if you&#8217;re ever being strangled, don&#8217;t act like a doomed heroine in a movie and attempt to push the person off you.  Instead, just poke him in the eye, especially if you have long fingernails.  On the verge of being killed is no time to be polite or squeamish.</p>
<p>Other movie annoyances:<br />
Person A is being chased by Person B, passing a number of things which could easily be knocked over into the path of the pursuer, but not knocking them over.  (Absurd&#8211;I figured this one out on the fly, while actually running from someone, in middle school.  It works beautifully.)</p>
<p>Person A is being chased by Person B, both of them carrying weapons.  Person A runs around a corner and keeps running, rather than running around a corner, crouching low, and preparing to shoot/stab/grandslam the pursuer.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.johnofjack.com/blog/2010/02/movie-annoyances/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>reading: 2009</title>
		<link>http://www.johnofjack.com/blog/2010/01/reading-2009/</link>
		<comments>http://www.johnofjack.com/blog/2010/01/reading-2009/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 01:28:09 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[comics]]></category>
		<category><![CDATA[graphic novels]]></category>
		<category><![CDATA[I am a dork]]></category>
		<category><![CDATA[lists]]></category>
		<category><![CDATA[reviews]]></category>

		<guid isPermaLink="false">http://www.johnofjack.com/blog/2010/01/reading-2009/</guid>
		<description><![CDATA[Way back in my undergrad days, when I was incredibly depressed and rudderless and desperate for some sense of meaning or achievement, I started keeping track of what books I read and what movies I watch.
It&#8217;s something I&#8217;ve stuck with because the items on the list turn out to be convenient fenceposts along my memory: [...]]]></description>
			<content:encoded><![CDATA[<p>Way back in my undergrad days, when I was incredibly depressed and rudderless and desperate for some sense of meaning or achievement, I started keeping track of what books I read and what movies I watch.</p>
<p>It&#8217;s something I&#8217;ve stuck with because the items on the list turn out to be convenient fenceposts along my memory: I watched this with her; I saw this one right after I moved; I watched this one abroad with family, etc.</p>
<p>At any rate, as a librarian it&#8217;s worth some reflection on the books I&#8217;ve read.</p>
<p>Death Note vol. 5 &#8211; 12<br />
Surely You&#8217;re Joking, Mr. Feynman<br />
The Adventures of Barry Ween, Boy Genius: 2.0<br />
Skim<br />
The King of Mulberry Street<br />
Deogratias<br />
I Know Why the Caged Bird Sings<br />
Good As Lily<br />
Bound by Law?<br />
The Complete Concrete<br />
The Book of Lists: Horror<br />
Squirrel Mother<br />
The Bloody Streets of Paris (graphic novel, not prose)<br />
The Pride of Baghdad<br />
Stray Bullets v. 1<br />
Dignifying Science<br />
Queen Bee<br />
Fax from Sarajevo<br />
Aya<br />
Nation<br />
Notes for a War Story<br />
Mom&#8217;s Cancer<br />
Sentences<br />
Into the Volcano<br />
Astro City: Life in the Big City<br />
Ghost World<br />
Artemis Fowl (graphic novel)<br />
Rapunzel&#8217;s Revenge<br />
Yossel.  April 1943<br />
Y: the Last Man, v. 1 -10<br />
Dogs &#038; Water<br />
The Eternals<br />
Blue Pills<br />
Same Difference &#038; Other Stories<br />
Artemis Fowl (prose)<br />
Artemis Fowl: The Arctic Incident<br />
Artemis Fowl: The Eternity Code<br />
Artemis Fowl: The Opal Deception<br />
Superman for All Seasons<br />
Tales from the Brothers Grimm (graphic novel adapation)<br />
Artemis Fowl: The Lost Colony<br />
Why I Killed Peter<br />
Artemis Fowl: The Time Paradox<br />
Invincible trade paperback: v.1 &#8211; 11 (and, later, Ultimate Invincibles 1-4)<br />
Jellaby: Monster in the City<br />
Fade<br />
Queen &#038; Country: Operation Broken Ground<br />
Swallow Me Whole<br />
Chicken with Plums<br />
Don&#8217;t Look Behind You<br />
The Graveyard Book<br />
The Artemis Fowl Files<br />
Street Angel<br />
Blueberry Girl<br />
Crazy Hair<br />
House<br />
Debbie Harry Sings in French<br />
Grammar of the Shot<br />
Hatter M: v. 1 in the Looking Glass Wars (graphic novel)<br />
Creatures of the Night<br />
The Facts in the Case of the Disappearance of Miss Finch<br />
A Wrinkle in Time<br />
A Wind in the Door<br />
The Book of Genesis Illustrated by R. Crumb<br />
The Strain<br />
The Beast of Chicago: the Murderous Career of H.H. Holmes<br />
The Secret Science Alliance and the Copy Cat Crook<br />
Johnny Hiro<br />
G-Man v. 1: Learning to Fly<br />
Diary of a Wimpy Kid: Greg Heffley&#8217;s Journal<br />
Diary of a Wimpy Kid: Rodrick Rules<br />
Daredevil: Echo / Vision Quest<br />
Asterios Polyp<br />
The Boy Who Harnessed the Wind<br />
Monster<br />
Little Brother<br />
Smax<br />
Animal Man<br />
The Professor&#8217;s Daughter<br />
The Goon: Chinatown<br />
Channel Zero<br />
Desperadoes: a Moment&#8217;s Silence</p>
<p>When I read <em>Nation</em> in May I thought it would be the best book I read all year&#8211;and it was, until December, when I read <em>The Boy Who Harnessed the Wind</em>, which turned out to be one of the best books I&#8217;ve read ever.</p>
<p>On this list, it&#8217;s worth noting the works which hinge on older technology or culture in a way that serves as a detriment to the story: the Complete Concrete suffers from its cultural references, many to people younger kids wouldn&#8217;t know; Johnny Hiro is moving in that direction; the plot of Channel Zero relies on obsolete technology; and while I enjoyed Little Brother, I expect that in twenty years it will look quaint.</p>
<p>Smax and Animal Man were both terrible books by good comics authors, and from the Neil Gaiman books I read this year&#8211;all of which struck me as slight, including The Graveyard Book, which won the Newbery&#8211;I&#8217;d like to say that I&#8217;m done with his work.  But I&#8217;ll probably keep reading them as they come out, in vain hope that they&#8217;ll be worth it.</p>
<p>The Strain was a terrible book co-written by a decent director (Guillermo del Toro).</p>
<p>Diary of a Wimpy Kid didn&#8217;t amuse me, at all.  To me, it just seemed like the same joke over and over (look: Greg Heffley is self-centered and oblivious!) and I chose not to read the next two books although I&#8217;d already bought them.  The library was happy to have them.</p>
<p>The Artemis Fowl books are good individually, with probably The Opal Deception the strongest among them, but reading them all within a short span makes their weaknesses show: each one depends entirely too much on that same tired ace up Colfer&#8217;s sleeve.</p>
<p>Y: The Last Man was very good, in spite of some spots that strained suspension of disbelief, but the ending was crap.  It, like Asterios Polyp, works much better if you ignore something big that happens at the end (except with Y there are two of those somethings, one pointlessly cruel and the other frankly impossible).</p>
<p>Invincible was another good find.  It&#8217;s a rare treat to find a fresh voice in superhero comics which isn&#8217;t in the vein of Alan Moore or Frank Miller, too macho to show warmth and too cynical to show hope.</p>
<p>Of all these, it looks like less than 20% were written or co-written by women authors (and since most of the books here are comics, it just reinforces the notion&#8211;correct, in this case&#8211;that comics are a boyzone).  Interestingly, I liked 3/4 of the books by women, which has the men beat by far.</p>
<p>The memoris ranged from good to very good.  The non-memoir non-fiction books were more uneven.  And I still don&#8217;t know what to make of Crumb&#8217;s Genesis, except that I wanted to like it more than I did.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.johnofjack.com/blog/2010/01/reading-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>aches and maths</title>
		<link>http://www.johnofjack.com/blog/2010/01/aches-and-maths/</link>
		<comments>http://www.johnofjack.com/blog/2010/01/aches-and-maths/#comments</comments>
		<pubDate>Sun, 24 Jan 2010 23:05:31 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ongoing]]></category>
		<category><![CDATA[ouch]]></category>
		<category><![CDATA[pain]]></category>
		<category><![CDATA[x-rays]]></category>

		<guid isPermaLink="false">http://www.johnofjack.com/blog/2010/01/aches-and-maths/</guid>
		<description><![CDATA[3 x-rays of the left hip
3 x-rays of the left knee
1 person wishing for a lead apron, though he has
no plans to have children
]]></description>
			<content:encoded><![CDATA[<p>3 x-rays of the left hip<br />
3 x-rays of the left knee<br />
1 person wishing for a lead apron, though he has<br />
no plans to have children</p>
]]></content:encoded>
			<wfw:commentRss>http://www.johnofjack.com/blog/2010/01/aches-and-maths/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Larabars saga</title>
		<link>http://www.johnofjack.com/blog/2010/01/the-larabars-saga/</link>
		<comments>http://www.johnofjack.com/blog/2010/01/the-larabars-saga/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 18:29:14 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[assessments]]></category>
		<category><![CDATA[food]]></category>
		<category><![CDATA[pointless rankings]]></category>
		<category><![CDATA[psa]]></category>
		<category><![CDATA[reviews]]></category>
		<category><![CDATA[silly]]></category>

		<guid isPermaLink="false">http://www.johnofjack.com/blog/?p=110</guid>
		<description><![CDATA[I&#8217;ve become addicted to these food bars which I stumbled onto in search of ones with a lower glycemic index than Clif Bars.  They all have a very short list of ingredients, and all with things that you&#8217;ve heard of (the apple pie one is something like &#8220;dates, raisins, apples, almonds, walnuts, cinnamon&#8221;).
Unfortunately the better [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve become addicted to these food bars which I stumbled onto in search of ones with a lower glycemic index than Clif Bars.  They all have a very short list of ingredients, and all with things that you&#8217;ve heard of (the apple pie one is something like &#8220;dates, raisins, apples, almonds, walnuts, cinnamon&#8221;).</p>
<p>Unfortunately the better ones aren&#8217;t as common as two of the worst (cashew &#038; peanut), and I love pistachios but that bar is just awful.</p>
<p>Apple pie: very good<br />
Lemon bar: very good<br />
Cocoa mole: very good<br />
Cinnamon roll: good<br />
Cherry pie: good, but tart (not cloyingly sweet like cherries are typically made)<br />
Key lime pie: not bad (DL likes it a lot more than I do)<br />
Cashew cookie: bland<br />
Peanut butter cookie: bland<br />
Pistachio: very bland, and it looks disgusting (green with yellowish corn-sized bits in)<br />
Jocalat: bad.  bad bad bad.  bad.  bad.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.johnofjack.com/blog/2010/01/the-larabars-saga/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vegan cherry-almond brownies</title>
		<link>http://www.johnofjack.com/blog/2009/11/vegan-cherry-almond-brownies/</link>
		<comments>http://www.johnofjack.com/blog/2009/11/vegan-cherry-almond-brownies/#comments</comments>
		<pubDate>Sat, 28 Nov 2009 00:40:53 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[baking]]></category>
		<category><![CDATA[brownies]]></category>
		<category><![CDATA[cooking]]></category>
		<category><![CDATA[dessert]]></category>
		<category><![CDATA[junk food]]></category>
		<category><![CDATA[vegan]]></category>

		<guid isPermaLink="false">http://www.johnofjack.com/blog/?p=106</guid>
		<description><![CDATA[1 C. turbinado sugar
1 C. flour
1 C. cocoa powder
1/2 tsp baking powder
1/4 tsp salt
2 T cornstarch (this is your binder)
3/4 C. vegan margarine
1 C. unsweetened applesauce
2 tsp. vanilla
12 oz. bag of frozen cherries, thawed and quartered
1/4 C. almonds, chopped
Powdered sugar to taste
Preheat oven to 350.
In a large bowl, mix the dry ingredients.  Put all the [...]]]></description>
			<content:encoded><![CDATA[<p>1 C. turbinado sugar<br />
1 C. flour<br />
1 C. cocoa powder<br />
1/2 tsp baking powder<br />
1/4 tsp salt<br />
2 T cornstarch (this is your binder)<br />
3/4 C. vegan margarine<br />
1 C. unsweetened applesauce<br />
2 tsp. vanilla<br />
12 oz. bag of frozen cherries, thawed and quartered<br />
1/4 C. almonds, chopped<br />
Powdered sugar to taste</p>
<p>Preheat oven to 350.</p>
<p>In a large bowl, mix the dry ingredients.  Put all the wet ingredients into a smaller bowl.  Thaw the cherries in a glass container in the microwave, then drain them into the wet ingredients.  Blend the liquids thoroughly, keeping the cherries separate.</p>
<p>Halve the cherries and chop the almonds, then coat them both in 1/4 C. of the dry mixture.</p>
<p>Mix the dry and wet ingredients together and fold in the coated cherries and almonds.</p>
<p>Pour mixture into a greased 9 x 12&#8243; pan.  Bake 30 to 35 minutes at 350, or until a toothpick comes out clean.</p>
<p>Let cool, then dust with powdered sugar.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.johnofjack.com/blog/2009/11/vegan-cherry-almond-brownies/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>the final scene in the restaurant in The Sopranos</title>
		<link>http://www.johnofjack.com/blog/2009/11/the-final-scene-in-the-restauruant-in-the-sopranos/</link>
		<comments>http://www.johnofjack.com/blog/2009/11/the-final-scene-in-the-restauruant-in-the-sopranos/#comments</comments>
		<pubDate>Sat, 14 Nov 2009 22:03:48 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[david chase]]></category>
		<category><![CDATA[edits]]></category>
		<category><![CDATA[film grammar]]></category>
		<category><![CDATA[huh]]></category>
		<category><![CDATA[oddness]]></category>
		<category><![CDATA[sopranos]]></category>
		<category><![CDATA[tv]]></category>

		<guid isPermaLink="false">http://www.johnofjack.com/blog/?p=87</guid>
		<description><![CDATA[I was late to The Sopranos, only starting it this year and finishing it a week or so ago.  I started the series with great enthusiasm then continued watching it with slightly less enthusiasm once season 3 finished and it began to seem likely that the following seasons would also be uneven.
Fortunately, &#8220;uneven&#8221; for The [...]]]></description>
			<content:encoded><![CDATA[<p>I was late to <em>The Sopranos</em>, only starting it this year and finishing it a week or so ago.  I started the series with great enthusiasm then continued watching it with slightly less enthusiasm once season 3 finished and it began to seem likely that the following seasons would also be uneven.</p>
<p>Fortunately, &#8220;uneven&#8221; for <em>The Sopranos</em> meant that the episodes would generally range from good to great, with the occasional clunker thrown in (usually written by Michael Imperioli and featuring some well-meaning but ultimately academic and tiresome treatise on one &#8220;big issue&#8221; or another).</p>
<p>Where the series succeeded for me most was in its characterization and in its steadfast refusal to meet expectations: each character had his or her own motives, which we could typically understand even though the characters themselves typically couldn&#8217;t, and plotlines continued, petered out, or picked up again almost at random.</p>
<p>Tony, for all his bluster and machismo, was afraid of most confrontations, even when (as at the end of Season 6) avoiding them would obviously come back to hurt him; and for all his claims to wanting to change, what Tony really wanted was to grouse a bit and feel justified remaining the same.  Janice was flighty and damaged, codependent and abusive, the kind of person who can&#8217;t feel good unless she&#8217;s making someone else feel bad.  Carmela was interested most of all not in morals, spirituality, or any other set of principles, but in living a life of luxury, regardless of its source&#8211;in appearing more wealthy than everyone else in her circle of friends.</p>
<p>These three characters&#8211;as indeed, almost all of the characters on the show, including the priest&#8211;were not as straightforward and consistent as they&#8217;d like to seem; almost every character was instead driven by hidden, unrecognized motives.  That gap between self-perception and others&#8217; perception remained one of the chief sources of conflict throughout the series.</p>
<p>The plotting was a draw too, especially in its willful digressions, whether into dreams (mostly Tony&#8217;s, sometimes Carmela&#8217;s) or into secondary and tertiary characters&#8217; lives (such as Kennedy&#8217;s and Heidi&#8217;s brief exchange after clipping Christopher&#8217;s SUV).  And then there was the broader approach to plotting, which made it look a lot like everyday life: plot threads were often left dangling, as in the case of the snitch Tony killed in Season One, or in Tracee&#8217;s murder, or in the attempted murder of the Russian from &#8220;Pine Barrens&#8221;).  Sometimes the other shoe simply would not drop.</p>
<p>Characters carried out important business along with mundane events: talked percentages and killed rivals between soccer games and ricotta pies.  As a whole the series made use of that absurd conjunction so effectively shown at the end of <em>Goodfellas</em>, with Henry Hill coked up, paranoid, and worried about his spaghetti sauce.</p>
<p>For all its willingness to experiment with story, to lay out expectations and sometimes refuse to meet them, the series was largely traditional in its approach to film grammar. New scenes would have establishing shots then move into a series of midshots or closeups in such a way that it reinforced the characters&#8217; physical position relative to each other while the audience was mostly focused on what they were saying.  The editors knew about &#8220;the line&#8221; and rarely crossed it, and while there were some continuity errors, the editors obviously were aware of jump cuts and generally avoided them.</p>
<p>In other words the film grammar was, with very few exceptions, so traditional as to be invisible.  The directors and editors had already shown ample knowledge of Shot/Reverse Shot, including several times in that last episode.  Here are two examples I jumped to at random:</p>
<p>Tony climbs the stairs, sees Janice outside on the deck:</p>
<div id="attachment_91" class="wp-caption alignnone" style="width: 310px"><a href="http://www.johnofjack.com/blog/wp-content/uploads/2009/11/tony-on-stairs-vlcsnap-2009-11-08-17h59m21.jpg"><img class="size-medium wp-image-91" title="tony on stairs vlcsnap-2009-11-08-17h59m21" src="http://www.johnofjack.com/blog/wp-content/uploads/2009/11/tony-on-stairs-vlcsnap-2009-11-08-17h59m21-300x168.jpg" alt="Tony on the stairs" width="300" height="168" /></a><p class="wp-caption-text">Shot</p></div>
<div id="attachment_92" class="wp-caption alignnone" style="width: 310px"><a href="http://www.johnofjack.com/blog/wp-content/uploads/2009/11/tony-sees-janice-vlcsnap-2009-11-08-17h59m28.jpg"><img class="size-medium wp-image-92" title="tony sees janice vlcsnap-2009-11-08-17h59m28" src="http://www.johnofjack.com/blog/wp-content/uploads/2009/11/tony-sees-janice-vlcsnap-2009-11-08-17h59m28-300x168.jpg" alt="Tony sees Janice" width="300" height="168" /></a><p class="wp-caption-text">Reverse Shot</p></div>
<p>Phil&#8217;s assassin stands over him, shoots him again:</p>
<div id="attachment_93" class="wp-caption alignnone" style="width: 310px"><a href="http://www.johnofjack.com/blog/wp-content/uploads/2009/11/phils-assassin-vlcsnap-2009-11-08-18h01m06.jpg"><img class="alignnone size-medium wp-image-94" title="phil's assassin vlcsnap-2009-11-08-18h01m06" src="http://www.johnofjack.com/blog/wp-content/uploads/2009/11/phils-assassin-vlcsnap-2009-11-08-18h01m06-300x168.jpg" alt="phil's assassin vlcsnap-2009-11-08-18h01m06" width="300" height="168" /></a><p class="wp-caption-text">Shot</p></div>
<div id="attachment_95" class="wp-caption alignnone" style="width: 310px"><a href="http://www.johnofjack.com/blog/wp-content/uploads/2009/11/phil-is-shot-again-vlcsnap-2009-11-08-18h02m18.jpg"><img class="size-medium wp-image-95" title="phil is shot again vlcsnap-2009-11-08-18h02m18" src="http://www.johnofjack.com/blog/wp-content/uploads/2009/11/phil-is-shot-again-vlcsnap-2009-11-08-18h02m18-300x168.jpg" alt="Phil is shot again" width="300" height="168" /></a><p class="wp-caption-text">Reverse Shot</p></div>
<p>In each case we&#8217;re given a shot of someone looking at something, followed by what that person is looking at.  Tony&#8217;s shots give a first person POV; the assassin&#8217;s lean towards first but actually aren&#8217;t (his head would have to be to the right of his right arm).</p>
<p>The writers spent much of episode two and three of Season 6 showing us Tony&#8217;s dream while in a coma.  The dream was both metaphorical and metaphysical and featured such obvious symbolism as Tony, in his Kevin Finnerty persona, arriving at a brilliantly lit house, being told that he can&#8217;t take his briefcase inside, and responding that he can&#8217;t leave it behind since his whole life is in it.</p>
<p>So the first shots of the final scene seem strange for a number of reasons: there the series&#8217; consistent appreciation for characters&#8217; internal lives, David Chase&#8217;s admission that he had the ending in mind since Season One, the long gap between Season 5 and Season 6, and the fact that David Chase both wrote and directed the last episode, as well as the series&#8217; general mastery of traditional film grammar.  I was a bit puzzled over what might be just a minor, meaningless edit in that scene where  Tony arrives at the restaurant.  These are the first four shots:</p>
<div id="attachment_96" class="wp-caption alignnone" style="width: 310px"><a href="http://www.johnofjack.com/blog/wp-content/uploads/2009/11/shot-vlcsnap-2009-11-08-18h03m53.jpg"><img class="size-medium wp-image-96" title="shot vlcsnap-2009-11-08-18h03m53" src="http://www.johnofjack.com/blog/wp-content/uploads/2009/11/shot-vlcsnap-2009-11-08-18h03m53-300x168.jpg" alt="Shot" width="300" height="168" /></a><p class="wp-caption-text">Shot</p></div>
<div id="attachment_97" class="wp-caption alignnone" style="width: 310px"><a href="http://www.johnofjack.com/blog/wp-content/uploads/2009/11/reverse-shot-vlcsnap-2009-11-08-18h03m57.jpg"><img class="size-medium wp-image-97" title="reverse shot vlcsnap-2009-11-08-18h03m57" src="http://www.johnofjack.com/blog/wp-content/uploads/2009/11/reverse-shot-vlcsnap-2009-11-08-18h03m57-300x168.jpg" alt="Reverse shot" width="300" height="168" /></a><p class="wp-caption-text">Reverse Shot</p></div>
<div id="attachment_98" class="wp-caption alignnone" style="width: 310px"><a href="http://www.johnofjack.com/blog/wp-content/uploads/2009/11/shot-vlcsnap-2009-11-08-18h04m11.jpg"><img class="size-medium wp-image-98" title="shot vlcsnap-2009-11-08-18h04m11" src="http://www.johnofjack.com/blog/wp-content/uploads/2009/11/shot-vlcsnap-2009-11-08-18h04m11-300x168.jpg" alt="Shot" width="300" height="168" /></a><p class="wp-caption-text">Shot</p></div>
<div id="attachment_100" class="wp-caption alignnone" style="width: 310px"><a href="http://www.johnofjack.com/blog/wp-content/uploads/2009/11/what-vlcsnap-2009-11-08-18h04m17.jpg"><img class="size-medium wp-image-100" title="what vlcsnap-2009-11-08-18h04m17" src="http://www.johnofjack.com/blog/wp-content/uploads/2009/11/what-vlcsnap-2009-11-08-18h04m17-300x168.jpg" alt="What?" width="300" height="168" /></a><p class="wp-caption-text">What?</p></div>
<p>Is Tony really at a restaurant awaiting his family?  Is he dreaming?  Is he dying (that is, was Phil&#8217;s crew honest in their statement that Tony could have Phil killed without any repercussions)?</p>
<p>I find it hard to believe that, having spent so long planning Season 6 and thinking about the series&#8217; ending, David Chase simply forgot to get ample coverage of the diner scene.  Maybe the edit doesn&#8217;t mean anything&#8211;David Chase could be called any number of things, but subtle about violence is not one of them.  Maybe Chase just wanted a jump cut there.</p>
<p>Whatever the reason for this strange edit, I&#8217;m sure that, if asked about it, Chase would refuse to explain.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.johnofjack.com/blog/2009/11/the-final-scene-in-the-restauruant-in-the-sopranos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
