<?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/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">

<channel>
	<title>dot unplanned</title>
	<atom:link href="http://mph.puddingbowl.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://mph.puddingbowl.org</link>
	<description>finger doesn&#039;t scale</description>
	<lastBuildDate>Sun, 05 May 2013 18:00:43 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/us/</creativeCommons:license>		<item>
		<title>Not so much after all</title>
		<link>http://mph.puddingbowl.org/2013/05/not-so-much-after-all/</link>
		<comments>http://mph.puddingbowl.org/2013/05/not-so-much-after-all/#comments</comments>
		<pubDate>Sun, 05 May 2013 18:00:42 +0000</pubDate>
		<dc:creator>mph</dc:creator>
				<category><![CDATA[etc]]></category>
		<category><![CDATA[fickleboy]]></category>
		<category><![CDATA[octopress]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://mph.puddingbowl.org/?p=3360</guid>
		<description><![CDATA[I&#8217;m not going to say the whole Octopress thing was a bad idea. It was a fine idea. It was just a fine idea premised on the notion that it might be fun to manage a blog with git, and that did not prove out. The whole build process is a drag, mobile blogging wasn&#8217;t [...]]]></description>
				<content:encoded><![CDATA[<div style="text-align:center;margin:1em;"><img src="http://mph.puddingbowl.org/wordpress/wp-content/uploads/2013/05/IMG_0782-1.jpg" alt="IMG 0782 1" border="0" width="500" height="308" /></div>

<p>I&#8217;m not going to say the whole Octopress thing was a <em>bad</em> idea. It was a fine idea. It was just a fine idea premised on the notion that it might be fun to manage a blog with git, and that did not prove out. The whole build process is a drag, mobile blogging wasn&#8217;t something I felt like working out, and the whole &#8220;make a new post, go to it in the filesystem, edit it, remember the thing in the YAML frontmatter to toggle its liveness if you&#8217;re not done&#8221; wasn&#8217;t cool.</p>

<p>I&#8217;ve got a few entries to bring back, but they were more bloggy than densely informational, so I don&#8217;t think anyone&#8217;s attached to them but me. I mostly worry about people being able to find the entry about <a href="http://mph.puddingbowl.org/2009/02/import-mailapp-notes-into-evernote/">converting Mail notes to Evernote notes</a>, because four years later, people keep finding it and appreciating it.</p>

<div style="text-align:center;margin:1em;"><img src="http://mph.puddingbowl.org/wordpress/wp-content/uploads/2013/05/IMG_0785-1.jpg" alt="IMG 0785 1" border="0" width="500" height="308" /></div>

<p>Also the <a href="http://mph.puddingbowl.org/2010/02/org-mode-in-your-pocket-is-a-gnu-shaped-devil/">org-mode one</a> one, because it really seems to make people happy.</p>

<p>And I&#8217;ve been thinking about <a href="http://mph.puddingbowl.org/2002/11/pie-diplomacy/">pie diplomacy</a> a lot lately.</p>

<p>Hey, let&#8217;s make it about something more than how the blog is run:</p>

<ul>
<li>contemplative photography</li>
<li>ukulele</li>
</ul>

<p>I did contemplative photography on my last visit to Las Vegas. I have never played a ukulele.</p>

<p>The contemplative photography thing sounds enticing, because I&#8217;m working outside my home and have four walks a day where building in an extra ten minutes to get to the Max stop could yield some nice results.</p>

<p>The ukulele thing sounds enticing for no reason I&#8217;ve managed to hold down and inspect.</p>

<div style="text-align:center;margin:1em;"><img src="http://mph.puddingbowl.org/wordpress/wp-content/uploads/2013/05/IMG_07391.jpg" alt="IMG 0739" border="0" width="500" height="308" /></div>
]]></content:encoded>
			<wfw:commentRss>http://mph.puddingbowl.org/2013/05/not-so-much-after-all/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Things We Can&#8217;t Hear</title>
		<link>http://mph.puddingbowl.org/2013/03/things-we-cant-hear/</link>
		<comments>http://mph.puddingbowl.org/2013/03/things-we-cant-hear/#comments</comments>
		<pubDate>Sat, 16 Mar 2013 17:00:28 +0000</pubDate>
		<dc:creator>mph</dc:creator>
				<category><![CDATA[this mortal coil]]></category>

		<guid isPermaLink="false">http://mph.puddingbowl.org/?p=3350</guid>
		<description><![CDATA[I have had luck remembering to do things when I&#8217;ve written them down and made them public, so here we go on this one: Hey! I&#8217;ve had a pretty good last couple of weeks. I was interested in this position elsewhere in Puppet, so I applied for it and I got it. There was a [...]]]></description>
				<content:encoded><![CDATA[<p>I have had luck remembering to do things when I&#8217;ve written them down and made them public, so here we go on this one:</p>

<p>Hey! I&#8217;ve had a pretty good last couple of weeks. I was interested in this position elsewhere in Puppet, so I applied for it and I got it.</p>

<p>There was a writing sample to be submitted, which wasn&#8217;t hard to write&#8212;writing is a thing I can do! So I sat down in the library one afternoon, reviewed my source material, wrote an outline (that&#8217;s how you know I&#8217;m serious), put on the headphones, loaded up this playlist I&#8217;ve got that starts with &#8220;Teen Age Riot&#8221; and builds from there, and did my best to burn the thing down. The whole time, there was a lot of &#8220;is this the right thing to do? Is this what you want to do over and over for a while?&#8221;  The last time I had to complete an exercise to get an interview, it&#8217;s worth noting, I realized right in the middle that I really didn&#8217;t like what I was doing after all so I stopped and apologized to the recruiter and that&#8217;s how I came to be at Puppet at all. &#8220;Writing,&#8221; said the recruiter, &#8220;is what really lights you up, isn&#8217;t it?&#8221;</p>

<p>Yes. Writing lights me up. Or, rather, it takes me out of right now, which makes me pretty happy.</p>

<p>Anyhow: Wow, it was hard to decide I was done, save my work, and mail it off to HR. I felt pretty good about the angle I came up with, I felt good about the tone, I felt good about the flow, but mailing it off was to say &#8220;this is me at my better, maybe best.&#8221; What would be more awful than thinking I was shredding with a Fender and being exposed as a mildly ridiculous keytar soloist?</p>

<p>So next I had to give a presentation. That was hard, too, but less from preparation: Once I knew what the hook was, it was pretty easy to get that out onto slides. I had ten years doing the thing I was presenting about, I care about it a lot, and I&#8217;m pretty sure I&#8217;m right about most of what I think. At least, right enough that if someone were to say, &#8220;please stop there. We can&#8217;t hire you for this position because your opinions are not correct,&#8221; I&#8217;d be pretty o.k. with not being hired because that would make me a bad fit.</p>

<p>The hard part wasn&#8217;t even giving the presentation. A few things went wrong, I got off track, and I missed a few of my talking points. That was o.k., because by the time I was past the first slide I was feeling pretty religious about the whole thing, and that counts for something. And I was at Ft. Bragg during the anti-PowerPoint interregnum, so my sense of presentations in general is that they are not the point of themselves and so can go pretty wrong provided you keep a map of the terrain in your head.</p>

<p>The hard part was being done and having to ride the train home, because I felt pretty spent. I&#8217;d just had religion for an hour, after all.</p>

<p>Then I had to just sort of stew for a few days, and that meant bracing for maybe not turning out to be the guy they were looking for. I don&#8217;t know if my way of preparing for that is great, because it involves modeling a number of responses to getting bad news in a variety of forms and also feeling sort of bad for the person who has to deliver the bad news and hoping that I&#8217;ll be able to put them at ease so they can deliver it with minimum discomfort.</p>

<p>Anyhow, I <em>did</em> get the job, and that was pretty great. Some of my soon-to-be new team came by my desk when they got the word and said some very nice things. In fact, I&#8217;ve been hearing a lot of nice things about myself, which is where we get to the thing that is most hard of all and why I&#8217;m writing at all: It&#8217;s very hard to hear those things, I don&#8217;t know where that comes from, and I know I don&#8217;t like it so I think I should figure out how to make it easier to hear them.</p>

<p>How do you do that? It feels like there are a lot of knots to untangle. Nigel, my boss until I transfer to the other side of the building, says it sounds like <a href="http://en.wikipedia.org/wiki/Impostor_syndrome">impostor syndrome</a>, which is totally not a DSM thing but feels pretty apt when I read about it. An ex-boss says I&#8217;m just habitually hard on myself. I have a very dear old friend who spends a lot of time asking me why I get like that. I don&#8217;t have a single answer. I guess I could point to some adult-era biographical facts that make pretty good sense and perhaps point toward adopting habits of thought that are not conducive to positive self regard. I guess I could point to some childhood biographical facts that might similarly create a way of thinking that aren&#8217;t great.</p>

<p>But Al shared with me an interesting Buddhist parable she heard at the zendo about a man who&#8217;s wounded with an arrow and refuses to remove it and stop the bleeding until he can figure out why he was shot in the first place.</p>

<p>When she told me the story, I did what I do, which was to say &#8220;well, that&#8217;s fine but I think I&#8217;d need to know more about his particular situation before deciding whether he wasn&#8217;t perhaps doing the right thing.&#8221;</p>

<p>I think she was right to tell me that story, though. The &#8220;whys&#8221; might be interesting, but I don&#8217;t think I need therapy so much as I need, perhaps, a bit of reason and some faith in my coworkers. I haven&#8217;t told you much about them. They&#8217;re pretty great. I wrote this a <a href="http://mph.puddingbowl.org/2012/12/oh-puppet/">little while back</a>:</p>

<blockquote>
  <p>There are lots of bright people working really hard to solve interesting problems. [...] Moreover, people there are very generous with their knowledge. There&#8217;s a lot of it, and sometimes it&#8217;s delivered very quickly in large packages you don’t so much receive as hope not to be crushed under, but it&#8217;s generously delivered all the same. I don’t get that creepy &#8220;don&#8217;t want to tell you because information is currency&#8221; vibe at Puppet. I get a &#8220;you need to know this because everyone wants everything to be better&#8221; vibe.</p>
</blockquote>

<p>That is still true, and there&#8217;s more good to say than that. It&#8217;s a good place, and a good place to work. I like being in the kitchen on a Monday morning, listening to laughter from people who enjoy each other and  haven&#8217;t seen each other for a few days. I like the way the Friday all-hands melts into people enjoying a beer with each other before heading home. I like how just about everybody seems so goddamn thoughtful and intent on solving whatever problem is in front of them. I could go into a lot of specific likes, too, but don&#8217;t want to embarrass anyone. It&#8217;s enough to say it&#8217;s a good place, and a good place to work, and it&#8217;s full of people who are talented and thoughtful.</p>

<p>So writing that down helps get a fingernail under the knot, and it was a little hard because I <em>hate</em> talking about good things that have happened to me: I don&#8217;t want to come off like I&#8217;m bragging or crowing. But it&#8217;s written down and it&#8217;s true. It&#8217;s a good place, a good place to work, and it&#8217;s full of people who are talented and thoughtful, and they picked me.  Even if I&#8217;m having a hard time having a lot of faith in myself, I&#8217;ve learned over the past six months to have a lot of faith in them, and I believe that should be enough.</p>
]]></content:encoded>
			<wfw:commentRss>http://mph.puddingbowl.org/2013/03/things-we-cant-hear/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Not Advocatist, but &#8230;</title>
		<link>http://mph.puddingbowl.org/2013/02/not-advocatist-but/</link>
		<comments>http://mph.puddingbowl.org/2013/02/not-advocatist-but/#comments</comments>
		<pubDate>Sat, 16 Feb 2013 16:58:56 +0000</pubDate>
		<dc:creator>mph</dc:creator>
				<category><![CDATA[mac and iphone]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://mph.puddingbowl.org/?p=3348</guid>
		<description><![CDATA[I have this idea I&#8217;d like to work on some time: MacRumors has this nifty buyer&#8217;s guide that tells you when it&#8217;s a good idea to be thinking about an upgrade because a given product family is due. If you take a look at the top, there&#8217;s some tidy, consistent markup: There&#8217;s a table (class [...]]]></description>
				<content:encoded><![CDATA[<p>I have this idea I&#8217;d like to work on some time:</p>

<p>MacRumors has this <a href="http://buyersguide.macrumors.com">nifty buyer&#8217;s guide</a> that tells you when it&#8217;s a good idea to be thinking about an upgrade because a given product family is due. If you take a look at the top, there&#8217;s some tidy, consistent markup:</p>

<p>There&#8217;s a table (<code>class = buyerstable</code>) and number of data cells with lists (<code>class "buyerslist"</code>), each of which contain list items (with classes of <code>red</code>, <code>green</code> and <code>yellow</code>) wrapping the name of each product family.</p>

<p>So &#8230; Nokogiri:</p>

<pre><code>#!/usr/bin/env ruby 

require "rubygems"
require "nokogiri"
require "open-uri"

interesting_products = ["iPad", "iPhone", "iPad Mini", "MacBook Air"]

url = "http://buyersguide.macrumors.com"

doc = Nokogiri::HTML(open(url))

doc.search('ul.buyerslist').each do |bl|
  bl.search('li.green').each do |product|
    if interesting_products.include?(product.text)
      puts product.text unless product.text.include?("Gazelle")
    end
  end
end
</code></pre>

<p>So, it seems to me there&#8217;s a programmatic way to tell if interesting things might be about to happen in Apple&#8217;s product lines. Do I care because I&#8217;m interested in knowing the best time to upgrade my Apple products?</p>

<p>No!</p>

<p>I care because most Apple writers become insufferable when there aren&#8217;t new products for them to fawn over. They delve into bitter, weird little obsessions, spend their time gloating over nits they have successfully picked, and do weird shit like call out Paul Thurott (whom I have met and is a nice guy who gave me a funny Microsoft mug when I was a Linux columnist) and Rob Enderle (who is an absurd thinker whose main contribution to the world of consulting is the productization of trolling). In other words, Mac writers, given no new stuff to talk about, become as bad as the things they hate, just like Nietzsche says people will.</p>

<p>So it occurs to me that if you&#8217;ve got a programmatic way to see if product changes are coming, you&#8217;ve got a programmatic way to see if the Mac people have anything worth reading. So if you&#8217;ve got an RSS reader that can  programmatically turn subscriptions on or off, you&#8217;ve got a programmatic way to ignore people who become annoying on reasonably predictable cycles. Alternately, maybe something like <a href="2">grapi</a> would do the trick by talking to Google Reader directly (meaning your changes show up on all your devices).</p>

<h3>More Precise Annoyance Removal</h3>

<p>But what about feeds that are good most of the time, but have annoyances embedded in them?  Kind of a nice NetNewsWire feature is the ability to make any script that returns a valid feed into a subscription. I used the example code from the Ruby 1.9.3 RSS library to make a simple script that reads in a feed, skips the stuff that matches a pattern, and then adds the remainder back to a feed:</p>

<pre><code>#!/usr/bin/env ruby
require 'rubygems'
require 'rss'
require 'open-uri'
require 'sanitize'


url = 'http://rss.macworld.com/macworld/feeds/main'
scrub_pattern = /(the\ week\ in|macalope)/i
title = "Scrubbed MacWorld"
author = "Mike's RSS Scrubber"

scrubbed_items = []
open(url) do |rss|
  feed = RSS::Parser.parse(rss)
  feed.items.each do |item|
    title = item.title
    unless item.title.match(scrub_pattern)
      scrubbed_items &lt;&lt; item
    end
  end
end

rss = RSS::Maker.make("atom") do |maker|
  maker.channel.author = author
  maker.channel.updated = Time.now.to_s
  maker.channel.about = "http://www.ruby-lang.org/en/feeds/news.rss"
  maker.channel.title = title

  scrubbed_items.each do |scrubbed_item|
    maker.items.new_item do |item|
        item.link = scrubbed_item.link
        item.title = scrubbed_item.title
        item.description = Sanitize.clean(scrubbed_item.description)
        item.pubDate = scrubbed_item.pubDate
    end
  end
end

puts rss
</code></pre>

<p>This clears out a lot of MacWorld&#8217;s &#8220;second bite at the apple&#8221; (heh) roundup posts, and the Macalope, who is dull.</p>

<p>It occurs to me that maybe the overarching project here is to define a set of feeds I have an uneasy relationship with in a simple YAML file, like:</p>

<pre><code>---
title: Some Mac Dude's Feed
shortname: some_mac_dude
url: http://somemacdude.com/rss
scrub: /somepattern/
</code></pre>

<p>Then genericize the script above so a simple Sinatra service can serve up feeds from an endpoint, like <code>http://mph.puddingbowl.org/feeds/some_mac_dude</code>. Then they&#8217;re scrubbed, available to Google Reader, and I can build the &#8220;is this blog going to irritate me when Apple&#8217;s not rolling out new product&#8221; logic into the app.</p>

<p>Say! We can also add tags!</p>

<pre><code>---
title: Some Mac Dude's Feed
shortname: some_mac_dude
url: http://somemacdude.com/rss
scrub: /somepattern/
tags: 
    - mac
    - coffee
    - children
</code></pre>

<p>And set up an &#8220;annoyance&#8221; endpoint on the Sinatra app that can add and destroy annoyances from the feeds served. Then a little mobile app to manually toggle annoyances on and off as they occur to me.</p>

<h3>Gosh, Mike &#8230;</h3>

<p>Yeah, I know, o.k.? I know.</p>
]]></content:encoded>
			<wfw:commentRss>http://mph.puddingbowl.org/2013/02/not-advocatist-but/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Turn a Redmine Issue into an OmniFocus Inbox Item</title>
		<link>http://mph.puddingbowl.org/2013/02/turn-a-redmine-issue-into-an-omnifocus-inbox-item/</link>
		<comments>http://mph.puddingbowl.org/2013/02/turn-a-redmine-issue-into-an-omnifocus-inbox-item/#comments</comments>
		<pubDate>Thu, 14 Feb 2013 16:56:11 +0000</pubDate>
		<dc:creator>mph</dc:creator>
				<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://mph.puddingbowl.org/?p=3346</guid>
		<description><![CDATA[I dropped this into an Automator Run Shell Script item and turned it into a service. It acts on your selected text and assumes you&#8217;ve either selected a valid Redmine issue URL (e.g. &#8220;http://projects.puppetlabs.com/12345&#8243;) or a valid Redmine issue number (e.g. &#8220;12345&#8243;). I tied it to the keystroke C-S-r, to drop the issue description and [...]]]></description>
				<content:encoded><![CDATA[<p>I dropped this into an Automator <code>Run Shell Script</code> item and turned it into a service. It acts on your selected text and assumes you&#8217;ve either selected a valid Redmine issue URL (e.g. &#8220;http://projects.puppetlabs.com/12345&#8243;) or a valid Redmine issue number (e.g. &#8220;12345&#8243;). I tied it to the keystroke <code>C-S-r</code>, to drop the issue description and URL into the OmniFocus inbox.</p>

<p>The sad part of this story is that rb-appscript isn&#8217;t under active development, so stuff like this won&#8217;t last much longer. Then it&#8217;s on to something Apple-sanctioned, like MacRuby or RubyCocoa (or falling back to the dark times of <code>do shell script</code>).</p>

<p><pre><code>
require "rubygems"
require "appscript"
require "redmine_client"
include Appscript</p>

<p>RedmineClient::Base.configure do
  self.site = 'http://projects.puppetlabs.com'
  self.user = 'USER'
  self.password = 'PASS'
end</p>

<p>ARGV.each do |f|
  issue_select = f</p>

<p>if issue_select.match(/^http/)
    issue_id = issue_select.match(/\d{1,}$/)[0]
  else
    issue_id = issue_select
  end</p>

<p>issue = RedmineClient::Issue.find(issue_id)
  issue_url = "http://projects.puppetlabs.com/issues/#{issue_id}"</p>

<p>of = app("Omnifocus").documents[0]</p>

<p>of.make(:new => :inbox_task,
          :with_properties => {
            :name => "(&#35;#{issue_id}) #{issue.subject}",
            :note => "#{issue_url}\n\n#{issue.description}",
            })
  end</p>

<p>app("Omnifocus").activate
</pre></code></p>
]]></content:encoded>
			<wfw:commentRss>http://mph.puddingbowl.org/2013/02/turn-a-redmine-issue-into-an-omnifocus-inbox-item/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shape of the problem, better colored ls output on Macs</title>
		<link>http://mph.puddingbowl.org/2013/02/shape-of-the-problem-better-colored-ls-output-on-macs/</link>
		<comments>http://mph.puddingbowl.org/2013/02/shape-of-the-problem-better-colored-ls-output-on-macs/#comments</comments>
		<pubDate>Mon, 11 Feb 2013 01:41:41 +0000</pubDate>
		<dc:creator>mph</dc:creator>
				<category><![CDATA[etc]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[ls]]></category>
		<category><![CDATA[octopress]]></category>

		<guid isPermaLink="false">http://mph.puddingbowl.org/?p=3343</guid>
		<description><![CDATA[BBEdit tells me it found 439 occurrences of &#8220;img src&#8221; in 317 files in the Markdown archives for dot unplanned, so this is starting to feel kind of doable. 122 of those occurrences are flickr images, only 27 use the ancient Movable Type 3 &#8220;click the thumbnail to pop up a window with the full [...]]]></description>
				<content:encoded><![CDATA[<p>BBEdit tells me it found 439 occurrences of &#8220;img src&#8221; in 317 files in the Markdown archives for dot unplanned, so this is starting to feel kind of doable. 122 of those occurrences are flickr images, only 27 use the ancient Movable Type 3 &#8220;click the thumbnail to pop up a window with the full image inside&#8221; markup, and 142 are consistently organized WordPress uploads I can manage with a little find-foo and a BBEdit text factory.</p>

<p>Hey &#8230; here are some things I learned to do, figured out or got around to:</p>

<h3>Better color <code>ls</code> in Mac:</h3>

<p>You can do <code>ls -G</code> in a Mac right now, without MacPorts or Homebrew installed, and you&#8217;ll get BSD-style colored output, which is to say &#8220;not as good as GNU-style colored output.&#8221; Directories, symlinks, and executables will be colored. That&#8217;s o.k. But I remembered back in Linux times where I could get things colored down to the file type. That&#8217;s what I prefer. I did some things one might reasonably do expecting to get that GNU-style output back on my Mac, missing a few key steps and badly aggravating myself, then stumbled across a missing piece last week while trying to figure out better bash prompts.  So here&#8217;s what to do:</p>

<ul>
<li>Pick one of <a href="http://www.macports.org">MacPorts</a> or <a href="https://github.com/mxcl/homebrew">Homebrew</a>. I do Homebrew, so the steps after this one should be read as <em>vague guidance</em> by MacPortists. </li>
<li>Install the GNU coreutils package: <code>brew install coreutils</code></li>
<li>Download <a href="https://gist.github.com/pdxmph/4751727">this gist</a> and save it to <code>~/.dir_colors</code></li>
<li>Make sure your new <code>~/.dir_colors</code> file has a line in it that starts with &#8220;TERM&#8221; and then matches the output of the command <code>echo $TERM</code></li>
<li>Get this into your <code>~/.profile</code> or <code>~/.bash_profile</code> or whatever it is you do<sup>*</sup>:</li>
</ul>

<script src="https://gist.github.com/pdxmph/4751777.js"></script>

<ul>
<li><code>source</code> your <code>~/.profile</code> or <code>~/.bash_profile</code>  </li>
<li>Try it out in a directory full of different kinds of things: </li>
</ul>

<p><img style="display:block; margin-left:auto; margin-right:auto;" src="http://mph.puddingbowl.org/wordpress/wp-content/uploads/2013/02/better_ls_colors.jpg.png" alt="Better ls colors" title="Better ls colors" border="0"  /></p>

<p>Is it awesome for you? Hope so!</p>

<h3>More informative <code>ls</code></h3>

<p>I also learned about a few more nice <code>ls</code> options while I was mucking around, and now I include these in my <code>ls</code> alias:</p>

<ul>
<li><code>-F</code> (classify): Which marks symlinks and directories with a <code>@</code> and <code>/</code> respectively. Yes, they are also colored, but I like seeing the trailing <code>/</code> after a directory.</li>
<li><code>--group-directories-first</code>, which does what it says on the tin.</li>
<li><code>-h</code>, for &#8220;human readable output&#8221; when displaying file sizes. I finally, after years of just typing it out, realized I never use <code>ls</code> without, so I canonicalized it. I eagerly await the first horrific misunderstanding that is going to cause me on some system that is not mine some day.</li>
</ul>

<p><small><sup>*</sup>Do I sort of hate the hall of mirrors that is <code>.bashrc</code>, <code>.bash_profile</code>, and <code>.profile</code>? Boy, I sure do. Especially in the age of things like <code>rbenv</code>/<code>rvm</code> and whatever else quietly diddles what they think your shell&#8217;s init file oughta be to make whatever blood magic they&#8217;re up to work correctly. I thought &#8220;just switch to zsh&#8221; would fix that, but then you start getting into bizarre &#8220;oh, that doesn&#8217;t work with zsh during install&#8221; situations that make you realize you&#8217;re losing all the time you thought you&#8217;d get back with obscure little shell workflow optimizations trying to figure out why suddenly <code>which</code> doesn&#8217;t work anymore.</small></p>
]]></content:encoded>
			<wfw:commentRss>http://mph.puddingbowl.org/2013/02/shape-of-the-problem-better-colored-ls-output-on-macs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>tentacled gardener</title>
		<link>http://mph.puddingbowl.org/2013/02/tentacled-gardener/</link>
		<comments>http://mph.puddingbowl.org/2013/02/tentacled-gardener/#comments</comments>
		<pubDate>Sat, 09 Feb 2013 19:27:46 +0000</pubDate>
		<dc:creator>mph</dc:creator>
				<category><![CDATA[etc]]></category>
		<category><![CDATA[jekyll]]></category>
		<category><![CDATA[octopress]]></category>

		<guid isPermaLink="false">http://mph.puddingbowl.org/?p=3341</guid>
		<description><![CDATA[Yesterday at work I demoed some things I&#8217;ve been doing to make dealing with a Jekyll/Markdown-based workflow easier. It was all about knowing how to use existing stuff better, not inventing new stuff. Two things are thanks to BBEdit being so goddamn awesome, and took just a little time to discover then apply to our [...]]]></description>
				<content:encoded><![CDATA[<p>Yesterday at work I demoed some things I&#8217;ve been doing to make dealing with a Jekyll/Markdown-based workflow easier. It was all about knowing how to use existing stuff better, not inventing new stuff. Two things are thanks to BBEdit being so goddamn awesome, and took just a little time to discover then apply to our own environment:</p>

<ol>
<li>Custom HTML preview templates (so you can see your Markdown looking like rendered HTML in the same templates in use on your live site)</li>
<li>Custom Markdown interpreters, so if you&#8217;ve strayed from vanilla Gruber Markdown, you can preview things like table markup rendered correctly. </li>
</ol>

<p>Those two things make day-to-day Markdown authoring in Jekyll 90 percent livable.</p>

<p>Jekyll also has a preview server and filesystem watcher that&#8217;s supposed to give you the ability to run a little Webrick instance and have your site automatically regenerate when changes are made. That would address a pain point we have when we&#8217;re writing docs or trying to deal with a bit of <a href="http://liquidmarkup.org">Liquid</a> and need to see how things will look for real rather than in Markdown and code. The problem is that our docs site is pretty big and there&#8217;s a lot for the filesystem watcher to keep track of, and it takes forever (o.k., 3 minutes) to build the site.  So I tested Jekyll&#8217;s preview server and found myself making a change to a file and waiting as long for Jekyll to redraw that one page as I would have anyhow just to preview the whole site.</p>

<p>Last week, with the <a href="http://liquidmarkup.org">release of Puppet 3.1</a>, I had to work with the Liquid in the templates to selectively show or hide links to the newly incorporated YARD <a href="http://docs.puppetlabs.com/references/3.1.latest/developer/index.html">developer documentation we&#8217;re maintaining</a>. Being new to writing Liquid, I was doing a lot of stumbling around and experimenting, and it was driving me nuts. The immediate solution to the problem was actually to just make the minimum viable bit of Ruby needed to parse and render a here doc with Liquid markup in it. That would be something like this:</p>

<script src="https://gist.github.com/pdxmph/4679961.js"></script>

<p>Both BBEdit and Textmate will run code with <code>⌘r</code>, so it just takes a second to paste that into a window and run it and see what Liquid will make of it.</p>

<p>So that got me over the hump of not wanting to wait to regenerate our site just to make sure I was handling a few little conditionals correctly, but there are a other places where practically live rendering of Liquid would come in handy. For instance, our syntax highlighting doesn&#8217;t preview well.</p>

<p>So as I was fiddling with <a href="http://octopress.org">Octopress</a> last week, I noticed one of its Rake tasks was <code>isolate</code>, which allows you to specify a specific file (or a fragment of its name). Rake moves all the files in the <code>_posts</code> directory to a stash directory except for the named file, then the little preview server spins up and the file is watched for changes. It makes previewing changes exactly as they&#8217;d be rendered almost instantaneous.</p>

<p>The Octopress solution wasn&#8217;t exactly right for us because it assumes a flat collection of files: No directories. And it also wasn&#8217;t exactly right for us because I think we tend to work on groups of files that may or may not share names but will probably be in a common directory.</p>

<p>So I took Octopress&#8217;s <code>isolate</code> and turned it into <code>preview</code>: Instead of specifying a file, you specify a directory, e.g. <code>rake preview[hiera]</code>, and then let the little Webrick/fswatcher bits of Jekyll run. While I was in there, I added a <a href="http://en.wikibooks.org/wiki/Ruby_Programming/Here_documents">here doc</a> that provides an index of files available for preview/edit at the docroot of the preview server (so you don&#8217;t need to guess URLs to find what&#8217;s available). Even with a dozen or so files to watch and re-render, it only takes Jekyll about a second to catch on that something has changed and spit out an updated version. I modified Octopress&#8217;s isolate workflow a little further by automatically restoring the stashed files when the server is shut down, so there&#8217;s no need to run <code>isolate</code>&#8216;s companion <code>integrate</code> task. It also invokes the Webrick preview automatically. So what Octopress does in three commands we can do in one.</p>

<p>An optional extra touch for the whole thing involves the <a href="http://livereload.com">LiveReload</a> browser plugin, which makes it possible to monitor a given URL for changes to the associated file and automatically reload it. So I can stick Safari in my second monitor, make edits in BBEdit, and each time I save the file Jekyll re-renders it and LiveReload updates Safari without me having to reach over and refresh. That&#8217;s handy.</p>

<p>But really, learning about Octopress&#8217;s <code>isolate</code> task gave me a small nudge in the direction of just pulling the trigger on using Octopress for real, bringing me to a small list of things I&#8217;ve got to do to make the 1,865 (1,866 once this post is live) posts work o.k.:</p>

<ol>
<li>Scrubbing as much block-level HTML as makes sense. Mostly that means dropping naked paragraph tags because stuff just goes wrong with them in Markdown parsers. Hey &#8230; it&#8217;s version controlled, so I can even pass that stuff through kramdown&#8217;s html-to-Markdown function and see what I get. </li>
<li>Scrubbing a bunch of poorly encoded characters that made their way through the several generations of software and operating systems involved with writing for the site. Fortunately, there are some fairly consistent ones, and BBEdit&#8217;s project search/replace will work fine for this.</li>
<li>Getting the 301s proper. I wrote just enough Ruby to reassure me that the filenames Jekyll&#8217;s WordPress extractor created matched the SEF URLs WordPress was using, so it looks like I&#8217;ll be able to get away with a single 301 built on a regexp instead of some greater number of individual 301s. </li>
<li>Straightening out syntax highlighting: I&#8217;ve got three or four different kinds of code markup on the blog, and since it isn&#8217;t even really a &#8220;code blog,&#8221; that&#8217;s sort of sad. I&#8217;ve got gists, <code>&lt;code&gt;</code> and <code>&lt;pre&gt;</code>, plus one or two false starts with WordPress plugins. Octopress has some plugins to support gists, which I&#8217;ve come to favor, but I think the more future-thinking approach is to convert non-gist code blocks to Jekyll/Liquid&#8217;s native method or CodeRay and leave existing gists embedded with JS alone. </li>
<li>Images. </li>
</ol>

<p>Wow. Images. What a mess. The WordPress part of the blog legacy won&#8217;t be terrible to sort out because they&#8217;re in consistent places, so no big deal to move them somewhere appropriate and either write a generic redirect or do a BBEdit mass replace. The Movable Type part of the blog&#8217;s heritage is sort of concerning, because I think I picked some of MT&#8217;s busier image display options and there&#8217;ll be some markup to find, parse, consider and rework.</p>

<p>Why&#8217;s it even matter? Mostly just the reasons for the ongoing trickle of traffic the site sees:</p>

<ol>
<li>org-mode In Your Pocket Is a GNU-Shaped Devil </li>
<li>Put the current Chrome URL in your Safari reading list </li>
<li>Import Mail.app “Notes” Into Evernote </li>
<li>Scripting iWork Numbers ’09 With Appscript </li>
<li>Back to BBEdit with a Unix Accent </li>
<li>Dumping Your Safari History With Ruby (Apple’s Curious Epoch) </li>
<li>Evernote and Repeatable Checklists </li>
</ol>

<p>Those are the posts out of the top 10 for the past year that aren&#8217;t either the front page or an index page of some kind. Out of the top 20 or more, a small proportion of &#8220;personal&#8221; entries creep in. So, I look at the list and think that I&#8217;m responsible for information people are at least <em>hoping</em> will be useful. If I scope in on the date, the list is made up of pretty much the same items. There isn&#8217;t a ton of traffic coming through, but it&#8217;s not nothing. So I&#8217;d like the information to be accessible and halfway pleasant to look at; and I&#8217;d like it to continue to be discoverable. Making that effort feels like it&#8217;s just part of the social contract. Especially since I feel privileged to do the sort of work I do, and that having that privilege is a direct result of other information gardeners keeping up their own plots.</p>
]]></content:encoded>
			<wfw:commentRss>http://mph.puddingbowl.org/2013/02/tentacled-gardener/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rummaging Through the Basement</title>
		<link>http://mph.puddingbowl.org/2013/02/rummaging-through-the-basement/</link>
		<comments>http://mph.puddingbowl.org/2013/02/rummaging-through-the-basement/#comments</comments>
		<pubDate>Mon, 04 Feb 2013 00:41:58 +0000</pubDate>
		<dc:creator>mph</dc:creator>
				<category><![CDATA[etc]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[movable type]]></category>

		<guid isPermaLink="false">http://mph.puddingbowl.org/?p=3339</guid>
		<description><![CDATA[There was never going to be a good way to do this, so I just bit the bullet and ran the WordPress importer on 1,038 entries from the old Movable Type-based Puddingtime! blog and removed the 177 that were not mine from the resulting import. Something about the WordPress Markdown plugin I&#8217;m using is really [...]]]></description>
				<content:encoded><![CDATA[<p>There was never going to be a good way to do this, so I just bit the bullet and ran the WordPress importer on 1,038 entries from the old Movable Type-based Puddingtime!  blog and removed the 177 that were not mine from the resulting import.  Something about the WordPress Markdown plugin I&#8217;m using is really screwy, so there are some glitches in the way some posts render, but the words came over o.k. So now I&#8217;ve got all my blog entries going back to late 2002 on one site.</p>

<p>I&#8217;m pretty fuzzy on what my web presence was like prior to blogging on Movable Type:</p>

<p>There was a <a href="http://en.wikipedia.org/wiki/Greymatter_(software)">greymatter</a> blog that I had a few entries in, and for a while I was keeping a thing sort of like a blog in <a href="http://phpwiki.sourceforge.net/">phpwiki</a>. All that stuff is lost.</p>

<p>Before that? I guess before that, there wasn&#8217;t a puddingbowl.org. I had some web space at my ISP in Charlottesville and I called <a href="http://web.archive.org/web/20010404004154/http://www.cstone.net/~mphall/">the site I had there</a> &#8220;pudding bowl.&#8221; There&#8217;s writing original to that site dating back to 1999, plus some I saved from my GeoCities site (which dated back to 1995 or &#8217;96).</p>

<p>Prior to Geocities, I think I had a <a href="http://en.wikipedia.org/wiki/Tripod.com">Tripod</a> site, but nothing survives from that.</p>

<p>Main point, I guess, is that I have a handle on almost all of my web presence from 1995-6 up through today, minus a brief gap when I was fiddling with PHPWiki.</p>

<p>One thing that entertains me is the <a href="http://web.archive.org/web/20010422110700/http://www.cstone.net/~mphall/tools.html">tools page</a> from the <cite>pudding bowl</cite>, which notes the use of Emacs in conjunction with a static site generator called genpage. So the other day? When I mentioned &#8220;<a href="http://mph.puddingbowl.org/2013/01/puppetverse-vagrant-jekyllfication/">the deathless novelty of static site generators</a>?&#8221; That&#8217;s what I was thinking about.</p>

<p>Once I had all the old entries into the WordPress database, I ran the Jekyll importer on the complete puddingbowl/puddingtime corpus, and it was kind of cool to see all 1,863 posts sitting there in plain text. I ran a quick, sloppy script against them to see how much writing I did in my blog each year:</p>

<table>
<tr>
<th>Year</th><th>Words Written</th><th>Posts Written</th>
<tr><td>2002<td>40,768<td>146</tr>
<tr><td>2003<td>112,560<td>517</tr>
<tr><td>2004<td>98,186<td>191</tr>
<tr><td>2005<td>82,699<td>181</tr>
<tr><td>2006<td>117,448<td>349</tr>
<tr><td>2007<td>127,957<td>273</tr>
<tr><td>2008<td>6,171<td>4</tr>
<tr><td>2009<td>45,234<td>82</tr>
<tr><td>2010<td>43,550<td>65</tr>
<tr><td>2011<td>8,938<td>15</tr>
<tr><td>2012<td>30,189<td>32</tr>
<tr><td>2013<td>11,313<td>8</tr>
<tr><td><strong>Total</strong><td>725,013<td>1,863</tr>
</table>

<p>2007 was the year of Peak Blog. The counts for earlier years are thrown off a little by the presence of automated posts that were rounding up delicious bookmarks and such, and for other years by a posting style I adopted that involved just one entry with several subjects per day.</p>

<p><strong>Update:</strong> Fascinating Jekyll fact: The site build time (and this is without me doing anything to trigger syntax highlighting in the markup):</p>

<p><code>rake generate  242.75s user 22.06s system 96% cpu 4:35.03 total</code></p>

<p>Remember how everyone wanted to get rid of Movable Type and move to WordPress because the site build times under MT were so agonizingly long and it was sooo much nicer to go to a database-driven site to wipe out build times? Right.</p>
]]></content:encoded>
			<wfw:commentRss>http://mph.puddingbowl.org/2013/02/rummaging-through-the-basement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>puppetverse, vagrant, jekyllfication</title>
		<link>http://mph.puddingbowl.org/2013/01/puppetverse-vagrant-jekyllfication/</link>
		<comments>http://mph.puddingbowl.org/2013/01/puppetverse-vagrant-jekyllfication/#comments</comments>
		<pubDate>Tue, 29 Jan 2013 04:34:34 +0000</pubDate>
		<dc:creator>mph</dc:creator>
				<category><![CDATA[puppet]]></category>
		<category><![CDATA[puppetize]]></category>
		<category><![CDATA[puppetverse]]></category>
		<category><![CDATA[vagrant]]></category>

		<guid isPermaLink="false">http://mph.puddingbowl.org/?p=2123</guid>
		<description><![CDATA[Hey, my colleague Max Martin at Puppet Labs had a piece about standing up a Linux dev environment in Puppet and Vagrant published at Linux.com today. It&#8217;s the first of a two-parter that provides a nice, practical Vagrant/Puppet walkthrough. I believe the plan for the next part is to include a github repo you can [...]]]></description>
				<content:encoded><![CDATA[<p>Hey, my colleague Max Martin at Puppet Labs had a piece about <a href="http://bit.ly/WtW9dj">standing up a Linux dev environment in Puppet and Vagrant</a> published at Linux.com today. It&#8217;s the first of a two-parter that provides a nice, practical Vagrant/Puppet walkthrough. I believe the plan for the next part is to include a github repo you can clone to get all the bits he covers in the tutorial. Once both parts are published, you won&#8217;t have any excuse not to give Vagrant a try. That&#8217;s another way in which 2013 is totally kicking 1985&#8242;s ass: No typing in those <cite>Compute! Gazette</cite> hex listings with the checksums at the end of each line.</p>

<p>Speaking of Vagrant, I cleaned up <a href="http://github.com/pdxmph/puppetverse">puppetverse</a> a little today. There&#8217;s still some room for improvement, but my main goal was to get rid of the parts that were particular to my immediate needs (documenting <a href="http://docs.puppetlabs.com/hiera/1/index.html">hiera</a>) and organize things a little better so that it&#8217;s clear which modules, manifests, and files are part of the Vagrant boot process, and which will be included by the puppet master once it&#8217;s up and running independent of Vagrant&#8217;s provisioning phase.</p>

<h3>jekyllifying</h3>

<p>I&#8217;ve taken a stab at getting this blog moved over to <a href="http://github.com/mojombo/jekyll">Jekyll</a> from WordPress three or four times in the past couple of years. Each time, something&#8217;s been not quite right.</p>

<p>Verdict: We live in a world of tradeoffs. I&#8217;ve tried three basic &#8220;export to Jekyll&#8221; approaches, and they&#8217;ve all had issues:</p>

<ol>
<li><p><a href="https://github.com/mojombo/jekyll/wiki/blog-migrations">The Jekyll + MySQL method</a> pulls in the content pretty well, and posts keep their category. They lose their tags, though. I don&#8217;t think that&#8217;s necessarily a problem: My current template doesn&#8217;t even expose tags, and I can&#8217;t see much evidence Google has ever found many of the tag pages.</p></li>
<li><p><a href="https://github.com/thomasf/exitwp">The exitwp method</a> ate some of my markup alive. Whole tables and spans vanished in just the first six or seven posts I reviewed after a migration. It&#8217;s a Python-based migration method, and I am not looking for a &#8220;get to know Python&#8221; project.</p></li>
<li><p><a href="https://github.com/benbalter/wordpress-to-jekyll-exporter">The WordPress export to Jekyll plugin method</a> never got past parse errors.</p></li>
</ol>

<p>Do I blame myself for the problems I had with approaches 2 and 3? I might as well. I settled on Markdown some time after I started dot unplanned, and I didn&#8217;t always deal with Markdown&#8217;s limitations in a constructive fashion. Any parser written by a conscientious person unwilling to take responsibility for the universe of awful HTML people can come up with is in its rights to give up and sit down.</p>

<p>That said, all my recent posts look pretty close to correct when I use the Jekyll + MySQL migration method, so if I can bring myself to shed the tag metadata I wasn&#8217;t using anyhow &#8230;</p>

<p>&#8230; I&#8217;ll just need to decide if I really <em>need</em> to do this, or if it&#8217;s something I talked myself into <em>wanting</em> to do because it didn&#8217;t work very well the first time I tried it, triggering some weird nerd combat reflex that wouldn&#8217;t allow me to put the idea behind me until I knew I could make it work.</p>

<p>I mean &#8230; If you have a WordPress blog you know two things:</p>

<ol>
<li><p>It&#8217;s very popular, and so it is well supported for standard blogging purposes.</p></li>
<li><p>It&#8217;s so popular that no matter what comes along to replace it in the next several years, should something that great come along, that thing will have to have very good WordPress migration support.</p></li>
</ol>

<p>Jekyll, though? It&#8217;s critical to the <a href="https://github.com/puppetlabs/puppet-docs">docs toolchain</a> I work with daily, but a lot of the <em>personal</em> use cases I&#8217;ve read seem to come down to git maximalism, WordPress performance concerns that are completely addressable by well established caching plugins, and security.</p>

<p>I totally hear the security concerns. I also hear an undercurrent of fascination with the deathless novelty of static site generators, and that&#8217;s fine, too. The question I&#8217;ve got to ask myself is what happens after I move to Jekyll. At that point, my content will live in a bunch of Markdown files. If I decide I&#8217;m tired of a git-based publishing workflow or whatever, it&#8217;ll probably be on me to write the scripts needed to get my stuff out. That doesn&#8217;t sound like a <em>ton</em> of fun now, and I wouldn&#8217;t trust the Me of Now to decide what&#8217;s going to be fun for the Me of Later Down the Road. After all, the Me of the Past played a shit-ton of World of Warcraft, and the Me of Now does not think that sounds interesting or fun at all.</p>
]]></content:encoded>
			<wfw:commentRss>http://mph.puddingbowl.org/2013/01/puppetverse-vagrant-jekyllfication/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Little Free Libraries Coming to Lents (care to help?)</title>
		<link>http://mph.puddingbowl.org/2013/01/little-free-libraries-coming-to-lents-care-to-help/</link>
		<comments>http://mph.puddingbowl.org/2013/01/little-free-libraries-coming-to-lents-care-to-help/#comments</comments>
		<pubDate>Sun, 27 Jan 2013 23:09:37 +0000</pubDate>
		<dc:creator>mph</dc:creator>
				<category><![CDATA[this mortal coil]]></category>
		<category><![CDATA[building stuff]]></category>
		<category><![CDATA[lents]]></category>
		<category><![CDATA[little free libraries]]></category>

		<guid isPermaLink="false">http://mph.puddingbowl.org/?p=2122</guid>
		<description><![CDATA[So, there are these things called &#8220;Little Free Libraries.&#8221; You build a small, weatherproof box, stick it on a post in your front yard, and you put books in it. People can take books or add books. You keep it stocked up if it runs low and keep it fixed up. That&#8217;s about it. Some [...]]]></description>
				<content:encoded><![CDATA[<p>So, there are these things called &#8220;<a href="http://www.littlefreelibrary.org">Little Free Libraries</a>.&#8221; You build a small, weatherproof box, stick it on a post in your front yard, and you put books in it. People can take books or add books. You keep it stocked up if it runs low and keep it fixed up. That&#8217;s about it.</p>

<p>Some neighbors of ours (the <a href="http://www.oregonlive.com/news/oregonian/anna_griffin/index.ssf/2011/07/couple_live_their_faith_by_bui.html">Springwater folks</a>, who helped us build a retaining wall a few years ago), wanted to start a neighborhood library. I mentioned Little Free Libraries, and it seems several people had the same idea all at the same time. So Laura Jones, the librarian at Kelly Elementary &#8211;Ben&#8217;s school&#8211;got a grant, and a number of other folks from around the city contributed a design and did some preassembly work for eight or ten little libraries in our part of Lents.</p>

<p><img style="display:block; margin-left:auto; margin-right:auto;" src="http://mph.puddingbowl.org/wordpress/wp-content/uploads/2013/01/IMG_2305.jpg" alt="IMG 2305" title="IMG_2305.JPG" border="0" width="500" height="375" /></p>

<p>Yesterday we had a building party at Kelly Elementary, with each library host family getting help assembling their library. Ours isn&#8217;t quite done yet (needs shingles, a nice doorknob and a little finishing work). The host families now have a few weeks to get them painted and ready to go up. Toward the end of February, the Springwater folks will come around and dig the postholes and pour the concrete, then come around again the next day to mount the libraries. There&#8217;ll be a neighborhood bike tour to see all the libraries, and we&#8217;ll be hosting a kickoff party at our house.</p>

<p>I&#8217;m a little excited about the whole thing: I&#8217;m really looking forward to keeping an inventory of the books in our little library, just to see what kind of use it gets. I&#8217;m hoping that ours, being across from a park, will see some use from the people who just come to hang out during nice weather and might like to have something to read while they&#8217;re sitting under a tree.</p>

<p>I&#8217;m also a little trepidatious, because I don&#8217;t want it to get vandalized. The flip side of living across the street from a park is that the pleasant people sitting under trees reading books by day are replaced by drunk assholes after 10:00 p.m. (Or teenagers dry-humping on the teeter totters, but they&#8217;re not usually interested in breaking anything.)</p>

<p>I&#8217;ve got a few ideas for our home&#8217;s library:</p>

<ol>
<li><p>It might be fun to tag the books and do the occasional ride through the neighborhood to other little libraries to see if any of the titles migrate.</p></li>
<li><p>One of my neighbors is an Army Corps of Engineers mathematician, and he&#8217;s interested in a campaign to build a small web app so Lents librarians can keep track of their inventories online.</p></li>
<li><p>It seems like an easy hack to tear apart one of those solar-powered garden lights, hook the door up to a switch to make a little light come on, for after dark visitors who aren&#8217;t interested in vandalism. I&#8217;d thought about just mounting a light that would come on after dark, but that might be a beacon for trouble.</p></li>
</ol>

<p>I&#8217;m sort of torn on the ideas that involve broadcasting the library&#8217;s presence. Having held a few garage sales where the book scanner people turn up in force, I don&#8217;t know if it would be a good idea for all our neighbors to plot interesting titles on a map. It was fun to think about building a library app and providing an API &#8230;</p>

<h4>Would You Like to Help?</h4>

<p>Since we&#8217;ll have to keep the library stocked up, donations are welcome. If you&#8217;ve got any books you&#8217;d like to contribute, I&#8217;d be happy to take them off your hands.</p>

<p>Better yet, if you do a zine or have published something you&#8217;d like to share, I&#8217;d <em>love</em> to include stuff like that in our library.</p>

<p>I&#8217;m sure I&#8217;ll have to go down to Goodwill or Value Village with a twenty now and then to stock back up, but the more original work I can include, the better. And self-published stuff you did on a shoestring is the very best: I&#8217;d really like it if our patrons could see and enjoy creative work that didn&#8217;t come from a big publishing house. You won&#8217;t just be sharing your words, you might be sharing a hint or a nudge.</p>
]]></content:encoded>
			<wfw:commentRss>http://mph.puddingbowl.org/2013/01/little-free-libraries-coming-to-lents-care-to-help/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Heroica and Such</title>
		<link>http://mph.puddingbowl.org/2013/01/heroica-and-such/</link>
		<comments>http://mph.puddingbowl.org/2013/01/heroica-and-such/#comments</comments>
		<pubDate>Sun, 27 Jan 2013 22:17:58 +0000</pubDate>
		<dc:creator>mph</dc:creator>
				<category><![CDATA[this mortal coil]]></category>
		<category><![CDATA[ben]]></category>
		<category><![CDATA[legos]]></category>

		<guid isPermaLink="false">http://mph.puddingbowl.org/?p=2120</guid>
		<description><![CDATA[So, Ben turned nine on the 24th. It&#8217;s a weird time of year to have a birthday, but we&#8217;re learning how to deal with it. It just seems to last for whatever the number of days is between the actual birthday and the next weekend day, with some mixture of presents and general indulgence culminating [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/98806759@N00/8421739602" title="View 'DSC_3133' on Flickr.com"><img height="332" style="display:block; margin-left:auto; margin-right:auto;" border="0" src="http://farm9.staticflickr.com/8363/8421739602_e58bc1d5b7.jpg" alt="DSC_3133" width="500" title="DSC_3133"/></a></p>

<p>So, Ben turned nine on the 24th. It&#8217;s a weird time of year to have a birthday, but we&#8217;re learning how to deal with it. It just seems to last for whatever the number of days is between the actual birthday and the next weekend day, with some mixture of presents and general indulgence culminating in an informal party with his clique from school.</p>

<p>This year, his birthday falling on a Thursday, he got his favorite dinner (drumsticks, mashed potatoes) and a cake (chocolate, vanilla frosting). We forgot to get candles, so I had to sort of wiggle my fingers over the cake until he made a wish and blew on them. Then they curled into a facehugger shape and went for his face.</p>

<p>We asked him what his wish was, and he said it was &#8220;let me watch just one episode of what you guys watch after I go to bed.&#8221; He started the negotiating at <em>American Horror Story</em> (no way in hell), then moved on to <em>Sons of Anarchy</em> (I&#8217;ll be rewatching that plenty in hell, so no), then went for what I think was the end game all along: <em>The Walking Dead</em>.</p>

<p>There was some debate: Entrails, human-on-zombie violence, maybe Shane sweatily pawing at Lori? Was that in the pilot? Couldn&#8217;t remember. Oh, and zombie on horse violence. But we o.k.&#8217;d it. He was pretty delighted.</p>

<p>Friday night, his friend Zack came over for a sleepover (<em>Paranormal Activity</em>, Minecraft, camera phone videos of assorted boy lunacy).</p>

<p>Saturday, we went to Oaks Park where he met with four of his friends and they went skating. Highlight:</p>

<p><strong>Me:</strong> So, having a good time?</p>

<p><strong>Ashton:</strong> Well, I fell and someone ran over my hand with a skate. Then I fell again and someone kicked me in the leg with a skate. Then I came in here and fell and stabbed myself in the eye with my straw. So, I guess so.</p>

<p>I gave him some cotton candy and listened to his outlandish stories about a giant Slinky he had at home.</p>

<p>Ben&#8217;s birthday present from me was a small Lego set featuring Gollum and Bilbo and some weird trap door that makes the One Ring pop out, and a Lego game called <a href="http://heroica.lego.com/en-us/Default.aspx">Heroica: Castle Fortaan</a>.</p>

<p>The Heroica line is pretty neat: You get a small Lego set that allows you to build seven or eight dungeon rooms, provides four hero figures, a collection of potion blocks, treasure chest blocks, bad buy blocks and weapons. Each Heroica set comes with two maps you can assemble into a particular adventure, like this:</p>

<p><a href="http://www.flickr.com/photos/98806759@N00/8421738864" title="View 'DSC_3129' on Flickr.com"><img height="332" style="display:block; margin-left:auto; margin-right:auto;" border="0" src="http://farm9.staticflickr.com/8496/8421738864_0893a8847c.jpg" alt="DSC_3129" width="500" title="DSC_3129"/></a></p>

<p>Then you move the characters through the dungeon trying to reach the final room. Along the way you can collect gold and battle monsters. Each hero represents a stripped down character class like you&#8217;d find in a fantasy RPG, and has a limited number of health points.</p>

<p><a href="http://www.flickr.com/photos/98806759@N00/8421740256" title="View 'DSC_3141' on Flickr.com"><img height="332" style="display:block; margin-left:auto; margin-right:auto;" border="0" src="http://farm9.staticflickr.com/8212/8421740256_df944e501a.jpg" alt="DSC_3141" width="500" title="DSC_3141"/></a></p>

<p>You can buy several sets in the Heroica line and combine them into bigger adventures, and it allows for some persistence from adventure to adventure (so a relic or gold earned in one game carry over to the next). The game rules include variants where players can either compete to reach the end first, or where one player controls all the monsters in the dungeon.</p>

<p>I was glad I found it: Last week at our friend Justin&#8217;s birthday party, there was some Lego stuff going on (Justin&#8217;s a fan). Our team won an Instagram scavenger hunt and we each won a Lego mini figure. We&#8217;ve never really put Legos in front of Ben (simpler building toys didn&#8217;t seem to be his thing), but he really liked the mini figures and asked for a Lego set. He&#8217;s also been asking to play more Pathfinder. So I walked into the store thinking &#8220;Hobbit-themed Lego set&#8221; but walked over to the games section thinking &#8220;fantasy/RPG-themed board game&#8221; that might give him some of that whole dungeon crawl thing without having to roll up a dungeon. And there&#8217;s Heroica: A fantasy/RPG-themed board game made out of Lego. Awesome.</p>
]]></content:encoded>
			<wfw:commentRss>http://mph.puddingbowl.org/2013/01/heroica-and-such/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
