<?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>Mon, 06 Feb 2012 13:20:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>At the pharmacy</title>
		<link>http://www.johnofjack.com/blog/2011/03/at-the-pharmacy/</link>
		<comments>http://www.johnofjack.com/blog/2011/03/at-the-pharmacy/#comments</comments>
		<pubDate>Fri, 01 Apr 2011 02:34:07 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://www.johnofjack.com/blog/2011/03/at-the-pharmacy/</guid>
		<description><![CDATA[&#8220;I left my doctor suddenly, so sorry if this is a stupid question, but is it legal to try to fill a prescription from a doctor you&#8217;re no longer seeing?&#8221; &#8220;Yeah.&#8221; &#8220;Okay, could you fill this? I won&#8217;t need it for about a week though.&#8221; &#8220;Sure, we&#8217;ll put it on file.&#8221; [goes to the computer, [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;I left my doctor suddenly, so sorry if this is a stupid question, but is it legal to try to fill a prescription from a doctor you&#8217;re no longer seeing?&#8221;<br />
&#8220;Yeah.&#8221;<br />
&#8220;Okay, could you fill this?  I won&#8217;t need it for about a week though.&#8221;<br />
&#8220;Sure, we&#8217;ll put it on file.&#8221;  [goes to the computer, starts typing]  &#8220;They don&#8217;t make it as a 450 mg, so we&#8217;d have to give you 3 150s.&#8221;</p>
<p>&#8230;</p>
<p>I looked it up, and 450 mg is apparently the maximum dosage for adults.  I&#8217;m tempted just to bump it back down to 300 mg and see if that knocks out the nausea, but I&#8217;d really much rather have a specialized doctor tell me what to do.  I hope Shands contacts me soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.johnofjack.com/blog/2011/03/at-the-pharmacy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>this is the worst I have felt in four years</title>
		<link>http://www.johnofjack.com/blog/2011/03/this-is-the-worst-i-have-felt-in-four-years/</link>
		<comments>http://www.johnofjack.com/blog/2011/03/this-is-the-worst-i-have-felt-in-four-years/#comments</comments>
		<pubDate>Mon, 28 Mar 2011 22:02:59 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.johnofjack.com/blog/2011/03/this-is-the-worst-i-have-felt-in-four-years/</guid>
		<description><![CDATA[Last week: doctor says he&#8217;s taking me off Effexor and increasing dosage on Wellbutrin, and it&#8217;ll be fine because they&#8217;re both SSRIs. I&#8217;m skeptical but decide it&#8217;ll be okay because he&#8217;s the doctor and I&#8217;m not, so he should know. Yesterday: I start the switch and, about six hours later, I have a headache and [...]]]></description>
			<content:encoded><![CDATA[<p>Last week: doctor says he&#8217;s taking me off Effexor and increasing dosage on Wellbutrin, and it&#8217;ll be fine because they&#8217;re both SSRIs.  I&#8217;m skeptical but decide it&#8217;ll be okay because he&#8217;s the doctor and I&#8217;m not, so he should know.</p>
<p>Yesterday: I start the switch and, about six hours later, I have a headache and feel oddly emotional&#8211;both cranky and weepy&#8211;but for the most part I&#8217;m okay.</p>
<p>Today: the headache is much worse, more a migraine really, and it&#8217;s hard to think and my throat feels tight and the emotions are worse, and as the day continues the symptoms start stacking up: I can feel my pulse in my forehead and I feel kind of nauseated, then I feel like I&#8217;m about to throw up or start crying, or both, and I feel really short of breath and my face is burning and then my co-worker tells me to go home and she&#8217;ll stay late for me and she&#8217;s really kind of pushy about it so I leave work and start crying on the way home and I can&#8217;t stop even though people are staring at me and I look up the meds and they&#8217;re not the same, though they&#8217;re almost the same&#8211;Wellbutrin is an SSRI and Effexor is an SNRI and Effexor is the one I quit taking..  And Effexor studies show a 78% chance of withdrawal symptoms with a long list of them, with the FDA listing about half a dozen as &#8220;severe.&#8221;</p>
<p>I called the doctor&#8217;s on-call number and left a long rambling number explainting that I can&#8217;t stop crying and I&#8217;m shaking and short of breath I&#8217;m dizzy and I feel like I&#8217;m going to puke.  And I keep telling myself it&#8217;s all in my head and the answer comes back &#8220;OF COURSE IT&#8217;S ALL IN MY FUCKING HEAD.  THAT&#8217;S WHAT A NEUROTRANSMITTER IS.  IT TRANSMITS. BETWEEN NEURONS.  IN THE HEAD.&#8221;   And oh God I need an answer quick I am never taking Effexor again in my life I want to go on the other SNRI I read about that you can go on that you can be on awhile and go off that instead and it&#8217;s not nearly as bad.</p>
<p><strong>update:</strong> It got worse.  After all that there was the uncontrollable trembling, the sweating, the panic attack, the dizziness so intense that the EMTs had to help me down the stairs and outside, one in front holding on to me and one in back propping me up, and then at the hospital I vomited four times in a row, still trembling and sweating and crying, my hands tingling and my legs numb.  One of the worst experiences of my life.</p>
<p>The doctor never called me back, which he explained the next day by saying that the previous day had been his birthday.  He wanted to put me back on Effexor. I refused outright, telling him I&#8217;d never take it again.  He wanted to know if it was &#8220;just because of the headache,&#8221; &#8220;just because of the nausea.&#8221;</p>
<p>Nothing about being completely incapacitated and put in the hospital suggests to me that &#8220;just&#8221; is a good way to describe what I was feeling.</p>
<p>I&#8217;m trying to arrange for a new doctor.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.johnofjack.com/blog/2011/03/this-is-the-worst-i-have-felt-in-four-years/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hearty vegetable soup</title>
		<link>http://www.johnofjack.com/blog/2010/12/hearty-vegetable-soup/</link>
		<comments>http://www.johnofjack.com/blog/2010/12/hearty-vegetable-soup/#comments</comments>
		<pubDate>Sun, 12 Dec 2010 01:01:16 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[food]]></category>
		<category><![CDATA[quick and easy]]></category>
		<category><![CDATA[recipes]]></category>
		<category><![CDATA[soup]]></category>

		<guid isPermaLink="false">http://www.johnofjack.com/blog/2010/12/hearty-merkan-vegetable-soup/</guid>
		<description><![CDATA[Hearty vegetable soup 1 large onion, chopped 1 potato, chopped 3 carrots, peeled and chopped 3 stalks of celery, sliced 1 32 oz. can crushed tomatoes 1 C. frozen English peas 1 C. frozen green beans 1 C. frozen corn enough vegetable bouillon cubes to make 8 C.&#8211;but use only 6 C. water with it [...]]]></description>
			<content:encoded><![CDATA[<p>Hearty vegetable soup</p>
<p>1 large onion, chopped<br />
1 potato, chopped<br />
3 carrots, peeled and chopped<br />
3 stalks of celery, sliced<br />
1 32 oz. can crushed tomatoes<br />
1 C. frozen English peas<br />
1 C. frozen green beans<br />
1 C. frozen corn<br />
enough vegetable bouillon cubes to make 8 C.&#8211;but use only 6 C. water with it<br />
1/2 tsp. oregano<br />
1/2 tsp. basil<br />
1/8 tsp. cayenne<br />
1 bay leaf<br />
1 tsp. salt<br />
ground pepper to taste</p>
<p>Combine all ingredients in a large pot.  Bring to a boil, then lower to a simmer.  Simmer, stirring occasionally, till the carrot is tender but not mushy (about 45 minutes).  Remove bay leaf.</p>
<p>Add additional salt as desired.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.johnofjack.com/blog/2010/12/hearty-vegetable-soup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why texting sucks</title>
		<link>http://www.johnofjack.com/blog/2010/12/why-texting-sucks/</link>
		<comments>http://www.johnofjack.com/blog/2010/12/why-texting-sucks/#comments</comments>
		<pubDate>Fri, 03 Dec 2010 21:53:39 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[cell phones]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[netflix]]></category>
		<category><![CDATA[prices]]></category>
		<category><![CDATA[pricing]]></category>
		<category><![CDATA[ripoffs]]></category>
		<category><![CDATA[texting]]></category>

		<guid isPermaLink="false">http://www.johnofjack.com/blog/2010/12/why-texting-sucks/</guid>
		<description><![CDATA[It&#8217;s highway robbery: If you&#8217;re getting charged 10¢ per text, with a maximum size of 160 characters, the phone company is charging you 10¢ to transfer 140 bytes. The average Netflix movie download is 700 MB. 700 MB = 734,003,200 bytes 734,003,200 bytes = 5,242,880 text messages. If Netflix downloads were priced like a text [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s highway robbery:</p>
<p>If you&#8217;re getting charged 10¢ per text, with a maximum size of 160 characters, the phone company is charging you 10¢ to transfer 140 bytes.</p>
<p>The average Netflix movie download is 700 MB.<br />
700 MB = 734,003,200 bytes<br />
734,003,200 bytes = 5,242,880 text messages.</p>
<p>If Netflix downloads were priced like a text message, it would cost you $524,288 to download a movie.</p>
<p>Of course, a number of plans charge 20¢ per text, which means you&#8217;d have to be a millionaire to watch a movie on Netflix.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.johnofjack.com/blog/2010/12/why-texting-sucks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>things unknown</title>
		<link>http://www.johnofjack.com/blog/2010/11/things-unknown/</link>
		<comments>http://www.johnofjack.com/blog/2010/11/things-unknown/#comments</comments>
		<pubDate>Thu, 04 Nov 2010 20:49:25 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[professional]]></category>
		<category><![CDATA[assumptions]]></category>
		<category><![CDATA[fail]]></category>
		<category><![CDATA[films]]></category>
		<category><![CDATA[guns]]></category>
		<category><![CDATA[hollywood]]></category>
		<category><![CDATA[movies]]></category>
		<category><![CDATA[pranks]]></category>
		<category><![CDATA[the gun you're using it wrong]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.johnofjack.com/blog/?p=149</guid>
		<description><![CDATA[Hours after a chat with Lesly yesterday about how things are done in one office at work, I remembered a story about an actor who was known more for his body than his acting ability (I can&#8217;t remember the guy&#8217;s name, or even what films he was in) who came up with what he thought [...]]]></description>
			<content:encoded><![CDATA[<p>Hours after a chat with Lesly yesterday about how things are done in one office at work, I remembered a story about an actor who was known more for his body than his acting ability (I can&#8217;t remember the guy&#8217;s name, or even what films he was in) who came up with what he thought was a pretty good prank on set one day: he&#8217;d take a gun loaded with blanks and pretend to shoot himself.</p>
<p>I&#8217;m sure it&#8217;s not the case on the most shoestring-budgeted indie films, but on any Hollywood film involving guns, there&#8217;s a gun expert.  The gun expert is there to advise the crew on how guns are used (&#8220;don&#8217;t yank the trigger; squeeze it&#8221;) and, more importantly, how they should never be used.  He sees the actor pick up the gun and put it against his head, and he starts shouting &#8220;no no no!&#8221; and the actor, apparently thinking what a great prank it&#8217;ll be, pulls the trigger.  Bang, slump, thump: dead.</p>
<p>What he didn&#8217;t know was that even a gun loaded with blanks, going off against the side of someone&#8217;s head, has enough concussive force to kill the person instantly.</p>
<p>All of which is to say that as a librarian, I should know better than to make assumptions, especially about fields in which I&#8217;ve never worked.</p>
<p>Thanks, Lesly.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.johnofjack.com/blog/2010/11/things-unknown/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>minor observations on Dr. Who</title>
		<link>http://www.johnofjack.com/blog/2010/10/minor-observations-on-dr-who/</link>
		<comments>http://www.johnofjack.com/blog/2010/10/minor-observations-on-dr-who/#comments</comments>
		<pubDate>Thu, 14 Oct 2010 02:25:34 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[dr. who]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[telly]]></category>
		<category><![CDATA[tv]]></category>

		<guid isPermaLink="false">http://www.johnofjack.com/blog/?p=145</guid>
		<description><![CDATA[I started watching Dr. Who with the 9th Doctor, Christopher Eccleston, and have really come to like it. I&#8217;d seen parts of episodes before, years prior, while sitting down to dinner, and even the odd full episode, but with no frame of reference they didn&#8217;t impress me much (and, even with a frame of reference, [...]]]></description>
			<content:encoded><![CDATA[<p>I started watching Dr. Who with the 9th Doctor, Christopher Eccleston, and have really come to like it.  I&#8217;d seen parts of episodes before, years prior, while sitting down to dinner, and even the odd full episode, but with no frame of reference they didn&#8217;t impress me much (and, even with a frame of reference, I still can&#8217;t believe the TARDIS &#8220;falling through a crack in time&#8221; in that one Cybermen two-parter&#8211;utter baloney, that).</p>
<p>Some time towards the end of David Tennant&#8217;s tenure (near the end of Season 3, I think) I started watching the William Hartnell years, though slightly out of order.  Netflix has the discs out of order, and the page I looked up which supposedly sorts it all out still has some of the discs out of order.  So far I&#8217;ve seen the intro arc, the cavemen arc, the first Dalek story (when the Daleks and the Doctor first meet each other, and the Daleks aren&#8217;t constantly seething with rage), the one where they&#8217;re trapped on the TARDIS, the Keys of Marinus, and the Aztec arc.  The Marco Polo arc should have been in there but wasn&#8217;t yet, leaving me a bit puzzled when Ian showed up at the start of the Keys of Marinus in an Asian outfit.</p>
<p>William Hartnell&#8217;s Doctor is, at first at least, apparently not very smart.  The first person he outsmarts is a caveman, and (unless there&#8217;s a mystery in the Marco Polo stories) it&#8217;s not until The Keys of Marinus that he solves a proper mystery.</p>
<p>The Dalek arc shows The 1st Doctor susceptible to radiation poisoning though the 10th Doctor, in the episode where Martha and the hospital are taken to the moon, can absorb and discharge low level radiation at will.</p>
<p>The sonic screwdriver hasn&#8217;t yet made an appearance, unless it was the small pen flashlight that the Doctor gave Ian to use in the Aztec tunnel (Ian only used it as a flashlight; the Doctor didn&#8217;t mention any other capabilities, and only referred to it as &#8220;this&#8221;).</p>
<p>There has been no use of psychic paper yet.  I suspect that&#8217;s something created for the 9th Doctor (and its use is inconsistent in the new series&#8211;the 10th Doctor used the paper, rather than the sonic screwdriver, to convince the double decker that he&#8217;d paid bus fare).</p>
<p>The studio sets are painfully obvious; people frequently are meant to be out of earshot of each other but plainly are not.  Many of the backgrounds are obviously paintings, sometimes even with folds and drapes visible.  Scenes of the TARDIS disappearing are plainly shot with models (and the Dalek city was obvious a model as well).</p>
<p>The pacing on these earliest episodes is abysmal&#8211;incredibly uneven, with a tendency towards the very slow.</p>
<p>Actors fumble their lines a lot, especially William Hartnell.  I wonder if the BBC were so pressed for time and/or money that they couldn&#8217;t do takes until people got it right.</p>
<p>In the Aztec arc, some of the people pronounce Tlotoxl &#8220;tl-TOX-l&#8221; and others &#8220;l-TOX-l.&#8221;</p>
<p>The TARDIS has several rooms, not just the one.</p>
<p>The Doctor has, in just these few episodes, been puzzled over why the TARDIS does some of the things it does, and doesn&#8217;t seem to know how to work it very well.  Yet, although he&#8217;s the only one working it, the ride is much smoother than it was (will be) with the 9th and 10th Doctors.  (And the 11th Doctor indicates that rides in the TARDIS are always bumpy because it&#8217;s meant to be operated by an entire team of people.)</p>
<p>The Doctor has a last name, and a granddaughter!</p>
<p>The Doctor has, quite possibly, changed the course of history in the cavemen arc by showing someone how to make fire.  Later in the Aztec arc he tells Barbara she can not stop the Aztecs from making human sacrifices, since nothing at all must be changed about history.  Then later he makes a pulley to help open the tomb door, and he lets Cameca see him making the pulley although he knows the Aztecs didn&#8217;t have them and she recognizes it as something new and interesting.</p>
<p>So far in the early episodes there has been little in the way of ethical quandaries, though the writers came close with Autloc asking &#8220;Yetaxa&#8221; (Barbara) if she would save her friend and destroy the Aztecs.  That&#8217;s only close to an ethical quandary because saving Ian wouldn&#8217;t actually destroy the Aztecs, since the series has given no indication that the Aztec gods actually exist and that they care what the Aztecs do.  The ethical quandaries that the Doctor and his companions face are one of my favorite things about the latest episodes.</p>
<p>The Doctor starts off as really kind of a jerk, though he&#8217;s warmed up a bit by the Aztec arc (and does, at least a little, seem to regret leaving Cameca).</p>
<p>The Doctor doesn&#8217;t know his history and culture nearly as well as he does later&#8211;he does not, for instance, know that making cocoa and sharing it with Cameca is the same as proposing to her.</p>
<p>The Doctor and his companions know how to speak the Dalek language although the TARDIS has never encountered them before.  The 9th Doctor tells rose that the TARDIS gets into the companions&#8217; heads and that&#8217;s why they can speak languages they&#8217;ve never encountered&#8211;because the TARDIS has.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.johnofjack.com/blog/2010/10/minor-observations-on-dr-who/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. About halfway [...]]]></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 Sirsi-Dynix (a good system not to have, IMO).</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 [...]]]></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>
	</channel>
</rss>

