<rss version="2.0"
xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">
 <channel>
  <title>News You Can Bruise</title>
  <link>http://www.crummy.com/</link>
  <description>Your chicken, your egg, your problem</description>
<creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.0/</creativeCommons:license>
  <image>
   <url>http://www.crummy.com/nb/resources/img/export.png</url>
   <title>News You Can Bruise</title>
   <link>http://www.crummy.com/</link>
  </image>
  <managingEditor>leonardr@segfault.org (Leonard Richardson)</managingEditor>
  <language>en-us</language>
  <docs>http://backend.userland.com/rss</docs>
  <lastBuildDate>Wed, 08 Feb 2012 15:02:03 GMT</lastBuildDate>
<item>
 <title>Beautiful Soup 4 Beta 4</title>
 <description>Beautiful Soup 4 beta 4 is out! You can install it with &lt;code&gt;easy_install beautifulsoup4&lt;/code&gt; or &lt;code&gt;pip install beautifulsoup4&lt;/code&gt;. You can also &lt;A href="http://www.crummy.com/software/BeautifulSoup/bs4/download/4.0/beautifulsoup4-4.0.0b4.tar.gz"&gt;download the tarball&lt;/a&gt;
or &lt;a href="https://code.launchpad.net/beautifulsoup/"&gt;check out the Bazaar repository&lt;/a&gt;.

&lt;p&gt;Big changes:

&lt;ul&gt;

&lt;li&gt;If you're using Python 3.2, the built-in &lt;code&gt;html.parser&lt;/code&gt; is now reliable enough to use on its own. You don't need to install lxml or html5lib just to parse bad HTML (but lxml is still a lot faster). The forthcoming Python 2.7.3 should also work this way.

&lt;p&gt;This is of course a feature of Python, but due to &lt;a href="http://bugs.python.org/issue13273"&gt;a pretty bad bug in &lt;code&gt;html.parser&lt;/code&gt;&lt;/a&gt;, I wasn't taking advantage of it. I worked with Ezio Melotti to monkeypatch that bug from within BS, and now we're back in the very good situation of not needing any external dependencies.

&lt;li&gt;&lt;code&gt;new_tag()&lt;/code&gt; will follow the rules of whatever tree builder was used to create the original soup. For example, a new &amp;lt;p&amp;gt; tag will look like "&amp;lt;p /&amp;gt;" if you're dealing with XML, but it'll look like "&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;" if you're dealing with HTML.

&lt;li&gt;There's now a &lt;code&gt;new_string()&lt;/code&gt; method to go along with &lt;code&gt;new_tag()&lt;/code&gt;.

&lt;li&gt;There are two new methods for manipulating the tree: &lt;A href="http://www.crummy.com/software/BeautifulSoup/bs4/doc/#insert-before-and-insert-after"&gt;&lt;code&gt;PageElement.insert_before()&lt;/code&gt; and &lt;code&gt;PageElement.insert_after()&lt;/code&gt;&lt;/a&gt;.

&lt;li&gt;I replaced the &lt;code&gt;substitute_html_entities&lt;/code&gt; argument with the more general &lt;A href="http://www.crummy.com/software/BeautifulSoup/bs4/doc/#output-formatters"&gt;&lt;code&gt;formatter&lt;/code&gt; argument&lt;/a&gt;. You can do all sorts of crazy stuff with this.

&lt;li&gt;The default formatter converts bare ampersands and angle brackets to XML entities, but doesn't touch HTML entities. I think it's kind of America-centric to convert characters like &amp;eacute; to &amp;amp;eacute; by default, but I might make the default a "punctuation" formatter that converts things like curly quotes to HTML entities.

&lt;/ul&gt;
</description>
 <pubDate>Wed, 08 Feb 2012 15:02:03 GMT</pubDate>
 <category domain="http://www.crummy.com/nb/nb.cgi/category/nycb/">beautifulsoup</category>
 <guid isPermaLink="true">http://www.crummy.com/2012/02/08/0</guid>
</item>
<item>
 <title>Constellation Games Author Commentary #11: "Launch Title"</title>
 <description>Love those title puns! This blockbuster episode sends Ariel TO THE
MOON and introduces two major new characters, &lt;a
href="https://twitter.com/Tetsuo_Milk"&gt;Tetsuo Milk&lt;/a&gt; and Ashley
Somn. Also a minor but important character: Linda Blum, Ariel's mom.  

&lt;p&gt;&lt;a href="http://constellation.crummy.com/microblog.html#chap10"&gt;Here's last week's Twitter archive&lt;/a&gt;, which ran two weeks ago due to my own errors. Twitter service has now resumed, but because this plot arc is so compressed (the rest of Part One crams two weeks of frantic activity into five weeks of real time), most of it is going to come out on Tuesdays and Wednesdays. Don't be afraid, I'll be here the whole time with long-winded commentary:

&lt;ul&gt;

&lt;li&gt;&lt;a href="http://www.flickr.com/photos/andy_bernay-roman/3486404205/"&gt;&lt;img title="Komodo dragon, lookin' stately" src="/graphics/nycb/2012/02/komodo.jpg" align="right"/&gt;&lt;/a&gt;It's such a relief to be able to talk about Tetsuo! So much
happens in this chapter, he doesn't get a lot of time with Ariel, but
that changes starting next week. Tetsuo is great, I love him a lot, but... he's a scene stealer.  Anything I wrote, he would grab and run off in some weird
direction. When  the Aliens were choosing human names, Tetsuo is the guy who picked a name because it means "iron man."

&lt;p&gt;Tetsuo reminds me of Londo Mollari from Babylon 5, in that he
starts out a comic relief character (insofar as a comedy can have
designated comic relief) and over time reveals more serious facets of
his personality. But unlike Londo, Tetsuo never stops saying goofy
shit. Tetsuo is the infrafictional author of the subscriber bonus tome "Pey Shkoy Benefits
Humans", which is set about six months after the end of the novel, and
he's still at it.

&lt;li&gt;Ashley Somn is &lt;i&gt;not&lt;/i&gt; a scene-stealer, so her husband kind of
overshadows her for most of the book. But she's an awesome character
on a slow burn. She's got a high-drama character arc that revs up in
the last third, and which I fill in with the bonus story "The
Time Somn Died." (Title is not a spoiler.)

&lt;li&gt;&lt;img title="Out back" src="/graphics/nycb/2012/02/alley.jpg" align="right"/&gt;I keep forgetting that Tetsuo is orange and Ashley is green; I
always imagine it the other way around. They're bright neon colors
with darker spots, like tropical frogs. Why? Are Aliens poisonous? I
dunno. Lick one and see!

&lt;li&gt;The short scene with BEA Agent Krakowski in back of the strip club is the
very last thing I wrote for &lt;i&gt;Constellation Games&lt;/i&gt;. Its main
purpose is to dramatize the sub rosa assignment Krakowski gives Ariel,
an assignment which becomes very important in Part Two. But I also
threw in the talking rat, to introduce you to something else that's
very important in Part Two: the idea that Ariel might not be the most
reliable narrator.

&lt;p&gt;I don't know why Krakowski and Fowler were at a strip club in the
middle of the day, but I'm sure it was work-related.

&lt;li&gt; The part of this chapter that's an excerpt from Ariel's Twitter
feed will not be shown on &lt;a href="https://twitter.com/ArielBlum/"&gt;his
actual Twitter feed&lt;/a&gt;, because that would be annoying. But that
section was the main inspiration for the in-character feeds in the
first place.

&lt;li&gt;Original title for this chapter: "MAN WALKS ON FUCKING MOON."

&lt;li&gt;One of the big problems with the second draft was that for most of
it, the tone was emotionally distant. It took me a while to 
understand the characters. The blog format didn't help, and
I moved further away from it in every draft. Ariel is a guy who shows
vulnerability in huge dramatic bursts and won't open up
otherwise.   Etc. etc. Anyway, I worked on this a lot in the third draft, and one of the big changes is that at Andrew Willett's suggestion I modeled Ariel's lunar excursion on &lt;A
href="http://www.webcomicsnation.com/shaenongarrity/narbonic_plus/series.php?view=archive&amp;chapter=39897#strip3"&gt;this
Narbonic strip&lt;/a&gt;.


&lt;p&gt;Ariel's reaction to being launched into space is taken directly
from what I imagine would happen to me. Also possibly taken from my
reaction as a kid to the Disneyland exhibit "Mission to Mars", which
had a similar setup where you saw the ground drop out from underneath
you while feeling absolutely no acceleration.

&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/File:Pioneer_plaque.svg"&gt;&lt;img src="http://www.crummy.com/graphics/nycb/2012/02/pioneer.png" align="right" title="Pioneer plaque illustration" /&gt;&lt;/a&gt;The sculptures of the figures from the Pioneer plaque (&lt;i&gt;not&lt;/i&gt;
"Carl Sagan's gold record", as Ariel mistakenly believes&amp;mdash;that's the Voyager record) are another
moment of not-quite-understanding taken from "Vanilla". Ariel's
initial description of the docking bay is the opening parenthesis of a
pretty huge piece of bookending, so watch for that.

&lt;p&gt;One of the imaginary book covers I had in my head while writing was
a design based on the Pioneer plaque, except with (clothed) Ariel and
Jenny.

&lt;li&gt;Ariel mentions some Eritrean refugees living on Ring City, but
they're only the biggest and most famous group of refugees&amp;mdash;the
ones Ariel knows about. Human Ring is also home to smaller groups of
refugees from around the world, and to miscellaneous individuals
living under the radar. The actual population of Human Ring at this
point is closer to 700 than to 500.

&lt;p&gt;The refugees come up a few times later on, but they don't play a
big part in the novel because I don't currently feel I've got the
literary chops to tell their stories. But I knew that not mentioning
refugees would be unrealistic. It would imply that humanity's
governments were able to coordinate to completely lock down the
planet, or that the Constellation was sending away asylum seekers. What we have is a compromise, not one I'm happy with, but I think the best I could do.

&lt;li&gt;&lt;a href="http://commons.wikimedia.org/wiki/File:Imagination_Oct_1954_cover.gif"&gt;&lt;img src="http://www.crummy.com/graphics/nycb/2012/02/imagination.gif" title="Pure imagination." align="left"/&gt;&lt;/a&gt;I know this is already super long, but I want to introduce a new
segment here on CG Author Commentary, a little recurring bit I like to
call &lt;u&gt;Creative License&lt;/u&gt;. Sure, I write silly stories about space
aliens visiting Earth seemingly in violation of the Fermi Paradox, but
that doesn't mean I can just make stuff up. At the same time, I
want Constellation technology to appear very close to the
"indistinguishable from magic" line. &lt;u&gt;Creative License&lt;/u&gt; explores that
tension by pointing out things that probably can't exist in real life,
and the made-up reasons I use to justify their existence in the story.

&lt;p&gt;First we have the shuttles the Constellation uses for short hops to
Earth and Luna. I have no idea how they go as fast as they do, but I
have a vague idea how they achieve a smooth ride: they use ports to
maintain an acceleration differential between the inside of the shuttle and
the outside, so the inside accelerates at a gravity-like rate
while the outside powers up towards some horrendous speed. Ports are very important bits of Constellation tech and
need their own segment on &lt;u&gt;Creative License&lt;/u&gt;. I'll probably do them
next week, after we see one in action.

&lt;p&gt;But this week we also have the Constellation spacesuits. Inflatable spacesuits are nothing new, but Ariel's suit folds up when not inflated and doesn't seem to have any space for hard parts like air tanks, a fluid recycler, the comm system he plugs his phone into, or a way of dissipating heat. &lt;u&gt;Creative License&lt;/u&gt; Solution: as you'll see later, the Constellation does pretty amazing things with origami. I imagine all that fine machinery is packed flat and inflates to the correct shape with the rest of the suit.

&lt;/ul&gt;

&lt;p&gt;

&lt;p&gt;What a huge commentary, and this plot arc's just getting started. Be sure to tune in next week, when Ariel will say, "I do not use sex to maintain social cohesion."

&lt;p&gt;Image credits: &lt;a href="http://www.flickr.com/photos/andy_bernay-roman/3486404205/"&gt;Andy Bernay&lt;/a&gt;, &lt;a href="http://commons.wikimedia.org/wiki/File:Oly_alley_01.jpg"&gt;Joe Mabel&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/File:Pioneer_plaque.svg"&gt;Linda Salzman Sagan&lt;/a&gt;, &lt;a href="http://commons.wikimedia.org/wiki/File:Imagination_Oct_1954_cover.gif"&gt;unknown&lt;/a&gt;.

&lt;p&gt;&lt;a href="http://www.crummy.com/2012/01/31/0"&gt;&amp;lt;- Last week&lt;/a&gt;&lt;/p&gt;</description>
 <pubDate>Tue, 07 Feb 2012 12:48:44 GMT</pubDate>
 <category domain="http://www.crummy.com/nb/nb.cgi/category/nycb/">Constellation%20Games</category>
 <guid isPermaLink="true">http://www.crummy.com/2012/02/07/0</guid>
</item>
<item>
 <description>Earlier &lt;a href="http://www.crummy.com/2012/01/22/0"&gt;I ran some speed/accuracy tests&lt;/a&gt; of Beautiful Soup driven by various parsers. Python's built-in HTMLParser scored very poorly, parsing only 52% (Python 2.7.1) or 57% (3.2.2) of my test pages without raising an exception. Well, Ezio Melotti, the maintainer of HTMLParser, has been working for a while on improving HTMLParser's handling of bad HTML. Most of this code is in Python 3.2.2, so I should have been getting the benefit, but it wasn't working for me because of a semi-related bug in HTMLParser, which is fixed in the as-yet-unreleased 3.2.3.

&lt;p&gt;After talking with Ezio today, I was able to monkeypatch BS4 to avoid the bug in 3.2.2. This means on Python 3, BS4 with no external parser installed will give reliability comparable to BS4+lxml (98% versus 99%). It's still about 50% slower, though, parsing about 1300 kb of HTML per second, versus 2100 kb/second for BS4+lxml.</description>
 <pubDate>Mon, 06 Feb 2012 21:55:09 GMT</pubDate>
 <category domain="http://www.crummy.com/nb/nb.cgi/category/nycb/">beautifulsoup</category>
 <guid isPermaLink="true">http://www.crummy.com/2012/02/06/0</guid>
</item>
<item>
 <title>easy_install beautifulsoup4</title>
 <description>This is an HTMLized version of an email I sent to the &lt;a href="http://groups.google.com/group/beautifulsoup/"&gt;Beautiful Soup discussion group&lt;/a&gt;, about the impending release of &lt;a href="http://www.crummy.com/software/BeautifulSoup/"&gt;Beautiful Soup 4&lt;/a&gt;.

&lt;p&gt;&lt;b&gt;Introduction&lt;/b&gt;

&lt;p&gt;When Beautiful Soup was first released in 2004, the state of HTML
parsing in Python was appalling. Over the past eight years, things
have improved so dramatically that Beautiful Soup's HTML parser is no
longer a competitive advantage. I don't want to duplicate other
peoples', work, so I'm getting Beautiful Soup out of the parser
businesss. Beautiful Soup's job is now to provide a Pythonic
screen-scraping API on top of a data structure created by a
third-party parser.

&lt;p&gt;This will be Beautiful Soup 4, and I've been planning it for
years. With help from Thomas Kluyver and Ezio Melotti, I've now met
the three main goals of Beautiful Soup 4:

&lt;ol&gt;
&lt;li&gt; Make a single codebase that works under Python 2 and Python 3.
&lt;li&gt; Stop using SGMLParser (removed in Python 3) and make it possible to
   swap out one parser for another.
&lt;li&gt; Support two major Python parsers (lxml and html5lib) as well as
   Python's (not currently very good) batteries-included parser,
   html.parser.
&lt;/ol&gt;

The first version of BS4 is almost ready for release, and I'd like you
to test it out, if you haven't already. I still to fix some things, in
particular some performance problems. But, note that even with the
performance problems, BS4 is faster than BS3 across the board.

&lt;p&gt;On Python 2 or Python 3 you can install the BS4 beta with this command:

&lt;blockquote&gt;
&lt;code&gt;easy_install beautifulsoup4&lt;/code&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can also &lt;a href="http://www.crummy.com/software/BeautifulSoup/bs4/download/4.0/beautifulsoup4-4.0.0b3.tar.gz"&gt;get the source tarball&lt;/a&gt;.

&lt;p&gt;&lt;a href="http://www.crummy.com/software/BeautifulSoup/doc/"&gt;The documentation&lt;/a&gt; has been completely rewritten. You may find &lt;a href="http://www.crummy.com/software/BeautifulSoup/doc/#porting-code-to-bs4"&gt;the section on porting BS3 code to BS4&lt;/a&gt; especially
interesting.

&lt;p&gt;There are three major things I'd like your feedback on before
completing the release.

&lt;p&gt;&lt;b&gt;Hall of Fame&lt;/b&gt;

&lt;p&gt;The BS3 documentation lists open-source projects that use Beautiful
Soup. I stopped maintaining this list many years ago because there are
hundreds of these projects, and since most of them are
screen-scrapers, they're pretty ephemeral.

&lt;p&gt;I'd like to bring this feature back as a "hall of fame", featuring
applications of Beautiful Soup that grab a reader's attention. People
who used Beautiful Soup in a high-profile way or to tackle a big
issue. Projects that are interesting to hear about even if the
software doesn't work anymore, or uses an old version of Beautiful
Soup, or if Beautiful Soup was used internally and the public only saw
the results.

&lt;p&gt;My bias is towards projects having to do with space, science,
journalism, politics and social justice. Here are some examples so you
know the kind of thing I'm thinking of:

&lt;ul&gt;

 &lt;li&gt;&lt;a href="http://www.nytimes.com/2007/10/25/arts/design/25vide.html"&gt;"Movable Type"&lt;/a&gt;, a work of digital art on display in the lobby of the
 New York Times building, uses Beautiful Soup to scrape New York Times
 feeds.

 &lt;li&gt;Alexander Harrowell uses Beautiful Soup to &lt;a href="http://www.harrowell.org.uk/viktormap.html"&gt;track the business
 activities&lt;/a&gt; of an arms  merchant.


 &lt;li&gt;The Lawrence Journal-World used Beautiful Soup in 2006 and 2010 to
 &lt;A href="http://www.b-list.org/weblog/2010/nov/02/news-done-broke/"&gt;gather election results&lt;/a&gt;.

 &lt;li&gt;The NOAA's Forecast Applications Branch uses Beautiful Soup in
 &lt;a href="http://laps.noaa.gov/topograbber/"&gt;TopoGrabber&lt;/a&gt;, a script for downloading "high resolution USGS datasets."

&lt;/ul&gt;

&lt;p&gt;If you did anything of this sort, or know of someone who did, I'd
like to hear about it.

&lt;p&gt;&lt;b&gt;Do you prefer lxml or html5lib?&lt;/b&gt;

&lt;p&gt;Right now, the parser ranking goes lxml, html5lib, html.parser. I like
lxml because it's incredibly fast and it can parse anything. But I'd
like to see what you think of the trees it generates. Would html5lib,
with its web-browser-like heuristics, be a better default?

&lt;p&gt;&lt;b&gt;substitute_html_entities &lt;/b&gt;

&lt;p&gt;BS3 had a number of overlapping and inconsistent ways of turning
HTML/XML entities into Unicode characters, and possibly turning
Microsoft smart quotes into HTML entities at the same time. In BS4,
all this stuff is gone. HTML and XML entities are *always* converted
into Unicode characters.

&lt;p&gt;This is great but there's one problem: output. If you want to turn
those Unicode characters back into entities when outputting as a
string, you need to call &lt;code&gt;soup.encode(substitute_html_entities=True)&lt;/code&gt;,
which is a little clunky. I'm thinking of adding an
&lt;code&gt;output_html_entities&lt;/code&gt; attribute that you can set on a soup or tag to
control whether this substitution happens. Do you like this idea?

&lt;p&gt;I think I also need to ensure that characters like "&amp;amp;" and "&lt;lt;" are
&lt;i&gt;always&lt;/i&gt; converted to XML entities on output, even though this will hurt performance a bit.

&lt;p&gt;&lt;b&gt;Conclusion&lt;/b&gt;

&lt;p&gt;What you install with &lt;code&gt;easy_install beautifulsoup4&lt;/code&gt; is a beta
release. If I hear of a problem soon, there's still time to fix it,
even if it means a major change to the API. So please try it out and
give me feedback.
</description>
 <pubDate>Thu, 02 Feb 2012 15:59:19 GMT</pubDate>
 <category domain="http://www.crummy.com/nb/nb.cgi/category/nycb/">beautifulsoup</category>
 <guid isPermaLink="true">http://www.crummy.com/2012/02/02/0</guid>
</item>
<item>
 <title>Constellation Games Author Commentary #10: "K.I.S.S.I.N.G."</title>
 <description>This is Dana Light's big chapter, and I'm having trouble writing
commentary because it's pretty self-contained. A problem is introduced
and Ariel solves it by the application of technology. If I hadn't been
writing a novel when I came up with Dana, this chapter would have
become a short story, maybe part of a sequel to &lt;a
href="http://futurismic.com/2008/04/01/mallory-by-leonard-richardson/"&gt;"Mallory"&lt;/a&gt;. It
would have been about the way evil psychologists use game mechanics
and &lt;a href="http://www.crummy.com/2008/03/13/0"&gt;the ELIZA effect&lt;/a&gt; to manipulate users into spending money, and the
way people get real pleasure from spending money on things designed to
manipulate them.

&lt;p&gt;&lt;div align="center"&gt;&lt;a title="Man with ELIZA" href="http://www.flickr.com/photos/kt/5285567782/"&gt;&lt;img src="http://www.crummy.com/graphics/nycb/2012/01/eliza.jpg"/&gt;&lt;/a&gt;&lt;a href="http://www.flickr.com/photos/dubswede/4628138940/"&gt;&lt;img title="Woman with gun" src="/graphics/nycb/2012/01/shooting.jpg"/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;Although &lt;a
href="https://twitter.com/#!/ArielBlum/status/147769471300415488"&gt;evil
psychology&lt;/a&gt; does show up in &lt;i&gt;Constellation Games&lt;/i&gt;, I didn't
have as much space for it as I'd like. Instead this chapter shows
the first grown-up thing we see Ariel do. In a world in
which sub-human-level AI has suddenly become very common, Ariel 
decides to empathize with it.

&lt;p&gt;He doesn't anthropomorphize Dana. Dana doesn't pass the Turing test,
she isn't terribly smart or self-aware, but she's capable of happiness and she doesn't deserve to be
deliberately made unhappy by evil psychologists. This attitude is what
 ultimately makes Ariel a hero, not just a POV character. The consequences of his decision to empathize will run through the entire book, and then overflow the book into "Dana no Chousen," and I still don't know when and whether Ariel does the right thing w/r/t Dana. But you gotta have empathy.

&lt;p&gt;Apart from that, I don't have much to say. Here are a few miscellaneous notes:

&lt;ul&gt;
&lt;li&gt;As you might expect, a lot of this stuff will come up again in "Dana no Chousen". But the callback you probably won't notice unless I point it out is that Dana loves popcorn.

&lt;li&gt;I enjoy many bits of this chapter but my favorite is Bai's big moment of lucidity, when he immediately detects and shoots down Ariel's Manic Pixie Dream Girl fantasy. (And you can bet &lt;i&gt;that's&lt;/i&gt; gonna come up again.)

&lt;li&gt;I'm sure that &lt;u&gt;G'go Investigation: When You Gotta Die&lt;/u&gt;
makes sense in cultural context. Like, imagine if the first thing
you learned about 21st-century Earth was &lt;u&gt;Mario Kart: Double Dash&lt;/u&gt;.

&lt;li&gt;I really like the design of the chainable memory cylinders on the Simulates Hi-Def False Daylight. In the second draft, "[False Daylight] games were
distributed as a set of ROM chips, snapped onto standardized circuit
boards, and enclosed in a removable plastic case to be plugged into
the computer's game slot." This led to chips popping out, hiding in the carpet and stabbing people in the foot. That's a design in keeping with the generally poor quality of Ip Shkoy consumer goods, but it doesn't fit with the fact that the False Daylight is a clone of the Brain Embryo, so I switched to the much cooler chainable cylinders.

&lt;li&gt;Originally I transliterated Bai's "bro" as "bra". Everyone hated
this. I changed it to "brah". The hate did not abate. What is wrong
with you people? "Brah" is an accurate transliteration! It's so
accurate.

&lt;/ul&gt;

&lt;p&gt;Tune in next week for action, intrigue, and romance between people at the same level of sentience. It's the only chapter when Ariel will say: "I just have a slight fear of being a tiny speck in the infinite cosmic void." But not the only chapter when he'll &lt;i&gt;think&lt;/i&gt; that.

&lt;p&gt;&lt;b&gt;PS:&lt;/b&gt; Due to an error on my part, the chapter 9 Twitter feeds ran as part of chapter 8, and chapter 10's Twitter feeds ran last week. This really can't go on, because next week's feeds are tightly integrated with chapter 11. So except for a brief bit of bonus material I just wrote, there will be no Twitter stuff this week. Sorry about that!

&lt;p&gt;&lt;i&gt;Photo credits: &lt;a href="http://www.flickr.com/photos/kt/5285567782/"&gt;Kevin Trotman&lt;/a&gt; and &lt;a href="http://www.flickr.com/photos/dubswede/4628138940/"&gt;Peter Anderson&lt;/a&gt;.&lt;/i&gt;

&lt;p&gt;&lt;a href="http://www.crummy.com/2012/01/24/0"&gt;&amp;lt;- Last week&lt;/a&gt; | &lt;A href="http://www.crummy.com/2012/02/07/0"&gt;Next week -&amp;gt;&lt;/a&gt;&lt;/p&gt;</description>
 <pubDate>Tue, 31 Jan 2012 13:18:31 GMT</pubDate>
 <category domain="http://www.crummy.com/nb/nb.cgi/category/nycb/">Constellation%20Games</category>
 <guid isPermaLink="true">http://www.crummy.com/2012/01/31/0</guid>
</item>
<item>
 <title>Fruit to Fruit</title>
 <description>Time for another crummy.com Apples to Apples variant (&lt;a href="http://www.crummy.com/2005/12/25/0"&gt;previous&lt;/a&gt; &lt;a href="http://www.crummy.com/2010/01/01/0"&gt;editions&lt;/a&gt;), this one discovered last week by Pat.

&lt;p&gt;On every green A2A card there's the name of the card, like "Handsome", but there are also three related words, like "attractive", "elegant", "fine". In Fruit to Fruit, you &lt;i&gt;don't read the name of the card&lt;/i&gt;. You just read the related words. Sometimes the related words are so similar that you might as well be reading the name of the card, but usually something goes missing (such as the masculinity of "handsome"), leading to funnier red cards being put down. The name of the card is finally revealed during judging.

&lt;p&gt;We had a great time with this and played it in conjunction with the &lt;a href="http://www.crummy.com/2010/01/01/0"&gt;Apples to Placebos&lt;/a&gt; variant, even though there were four players. You might think this overkill, but at this point A2A is more a social activity than a game. Anyway, it says right on the box "The game of hilarious comparisons!", so anything that makes the comparisons more hilarious is legit.

&lt;p&gt;While seeing if anyone else had come up with this variant I discovered &lt;a href="http://boardgamegeek.com/thread/621995/apples-to-trivial-pursuit"&gt;Apples to Trivial Pursuit&lt;/a&gt;, and &lt;a href="http://boardgamegeek.com/thread/729240/improv-comedy-variant"&gt;the improv comedy variant&lt;/a&gt;. I also discovered that &lt;a href="http://www.google.com/patents/US6328308"&gt;the game is patented&lt;/a&gt;, and that &lt;a href="www.uspto.gov/web/patents/classification/uspc273/defs273.htm"&gt;there is an entire patent classification system&lt;/a&gt; for  "means... by which contests of skill or chance may be engaged in among two or more participants, where the result of such contests can be indicated according to definite rules."</description>
 <pubDate>Sat, 28 Jan 2012 13:58:33 GMT</pubDate>
 <category domain="http://www.crummy.com/nb/nb.cgi/category/nycb/">games</category>
 <guid isPermaLink="true">http://www.crummy.com/2012/01/28/0</guid>
</item>
<item>
 <title>CG Author Commentary #9: "Import System"</title>
 <description>Last week and this week have some of my favorite Twitter bits (&lt;a href="https://twitter.com/#!/ArielBlum/status/161209029664845827"&gt;e.g.&lt;/a&gt;) because the CDBOEGOACC is finally available in English. Sunday night while working on &lt;a href="http://www.crummy.com/writing/Loaded%20Dice/"&gt;Loaded Dice&lt;/a&gt; I realized that one of the reasons I really like playing around with the BoardGameGeek dataset is it's like a real-life CDBOEGOACC.

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/krusty/64840013/"&gt;&lt;img src="http://www.crummy.com/graphics/nycb/2012/01/anenome.jpg" title="Sea anenome." align="left"/&gt;&lt;/a&gt; The flip side is this chapter doesn't have a lot of plot. But hopefully you're okay
with that because of all the fun mini-stories like the &lt;u&gt;Sea Level&lt;/u&gt; game/food. It's supposed to
represent the design phases of a software project, where you're
throwing around a lot of ideas but not much is being produced.

&lt;p&gt;Next week is a set piece, and after that the plot won't let up
until the cliffhanger that ends Part One. Before that happens, I need to get some solid exoludology in to bring in topics that are important later, like &lt;u&gt;Sayable Spice&lt;/u&gt; and Ariel's unsuccessful attempts to translate it.

&lt;p&gt;Before beginning the chapter 9 commentary, I want to get something off my chest about the first sighting of the Farang in chapter 1. In that chapter, Ariel compares their antennacles to the oral tentacles of a
"cerebrophage". In the second draft I just out and said "mind
flayer". My writing group said I should change it because readers
might not know what a mind flayer is. ("Did you mean: mind &lt;i&gt;flower&lt;/i&gt;?") Taking their advice to heart, I
changed the reference to &lt;i&gt;a made-up reference that nobody will get&lt;/i&gt;. Well,
at least we're all in the same boat now!

&lt;p&gt;And here's chapter 9. Vent your egg sacs before reading this commentary:

&lt;ul&gt;

&lt;li&gt;This chapter represents the absolute end of the abandoned first
draft. Beyond this point everything is from the second or third draft.

&lt;li&gt;&lt;a href="http://commons.wikimedia.org/wiki/File:Baalbek_-_temple_of_Jupiter.jpg"&gt;&lt;img align="right" title="Temple of Jupiter in Lebanon" src="/graphics/nycb/2012/01/jupiter.jpg"&gt;&lt;/a&gt;In a questionable move on my part, Ariel gets an Alien computer
before he meets any Alien characters, requiring that I introduce you
to the species with an infodump ("eight-foot monkey-lizards"). Don't
worry, in just a couple weeks, Alien characters will show up and run
off with the whole damn book.

&lt;li&gt;Speaking of infodumps, I want to do a little infodump of my
own, about the Ip Shkoy. The Ip Shkoy were an ancient civilization of
Aliens, much like the Roman Empire was an ancient civilization of
humans. "Ip Shkoy" is &lt;i&gt;not&lt;/i&gt; the native-language name for the
Alien species. I tried to make this abundantly clear, but I've noticed
well-intentioned people calling the Alien species "the Ip Shkoy" or
ascribing to modern Aliens the (frequently pretty awful) opinions of
the Ip Shkoy. Which would be like Curic thinking that Ariel regularly
offers sacrifices to Jupiter Optimus Maximus.

&lt;p&gt;&lt;i&gt;Star Trek&lt;/i&gt; has conditioned us to see an ET species as having
a single homogenous culture that never changes, and this sort of
confusion is why they do that on &lt;i&gt;Star Trek&lt;/i&gt;. That said, I don't
think this is anyone's fault but my own. If I'd presented modern Alien
society in as much detail as I present the Ip Shkoy, the other
probably wouldn't crowd out the one. It doesn't help that certain
features &lt;i&gt;are&lt;/i&gt; shared by both cultures, such as transitive pair bonding (aka polyamory).

&lt;li&gt;&lt;u&gt;Recapture That Remarkable Taste&lt;/u&gt;, the Ip Shkoy remake of
&lt;u&gt;Sayable Spice&lt;/u&gt;, is not to be confused with the new William
Gibson anthology, &lt;i&gt;Distrust That Particular Flavor&lt;/i&gt;.

&lt;li&gt;&lt;a href="http://www.flickr.com/photos/coffeegeek/4116594405/"&gt;&lt;img src="http://www.crummy.com/graphics/nycb/2012/01/siphon.jpg" align="right" title="Siphon coffee maker"/&gt;&lt;/a&gt; Charlene Siph is mentioned again, which gives me a good excuse to
talk about Alien names. The Aliens on the contact mission have all taken human first names, but their surnames are monosyllables which I usually generated by truncating creepy English words ("siphon", "somnolent") to four letters. The impression I want is of someone who's trying to be accommodating but doesn't quite have it down.

&lt;p&gt;This is another detail imported from "Vanilla", one that I'm really
happy with, one that even becomes important to the plot in one
place. And if you like symbolism, check this out: "Ariel Blum" could be an Alien name.

&lt;li&gt;In the second draft I wrote a whole review of &lt;u&gt;Proty's Big
Escape&lt;/u&gt;, but turns out it's a dumb idea to insert one game review
wholesale into another game review. Let me know if you want the
&lt;u&gt;Proty&lt;/u&gt; review, and I'll make it the first CG Deleted Scene, even
though it's only five paragraphs long.

&lt;/ul&gt;

&lt;p&gt;Be sure to tune in next Tuesday, when Dana will say, "This application will terminate due to suspected theft or circumvention." 

&lt;p&gt;Oh, and you might want to keep an eye on &lt;a href="https://twitter.com/#!/Tetsuo_Milk"&gt;@Tetsuo_Milk&lt;/a&gt;.

&lt;p&gt;&lt;i&gt;Image credits: &lt;a href="http://www.flickr.com/photos/krusty/64840013/"&gt;Flickr user krusty&lt;/a&gt;, &lt;a href="http://commons.wikimedia.org/wiki/File:Baalbek_-_temple_of_Jupiter.jpg"&gt;Guillaume Piolle&lt;/a&gt;, and &lt;a href="http://www.flickr.com/photos/coffeegeek/4116594405/"&gt;Flickr user CoffeeGeek&lt;/a&gt;.&lt;/i&gt;

&lt;p&gt;&lt;a href="http://www.crummy.com/2012/01/17/0"&gt;&amp;lt;- Last week&lt;/a&gt; | &lt;a href="http://www.crummy.com/2012/01/31/0"&gt;Next week -&amp;gt;&lt;/a&gt;</description>
 <pubDate>Tue, 24 Jan 2012 13:06:35 GMT</pubDate>
 <category domain="http://www.crummy.com/nb/nb.cgi/category/nycb/">Constellation%20Games</category>
 <guid isPermaLink="true">http://www.crummy.com/2012/01/24/0</guid>
</item>
<item>
 <title>To This Basic Game Hedgehogs Are Added</title>
 <description>I bought a cute game about hedgehogs, &lt;a href="http://boardgamegeek.com/boardgame/18844/der-igelwettkampf"&gt;Der Igelwettkampf&lt;/a&gt; ("The hedgehog contest"), as a Christmas present for my niece. On Der Igelwettkampf's BoardGameGeek page I noticed that it was classified under the game family "Animals: Hedgehogs/Porcupines". I'd thought "Family" was for boring things like grouping together the endless versions of Ticket to Ride, but turns out it's also used to group together all the games about hedgehogs.

&lt;p&gt;&lt;img align="left" src="http://www.crummy.com/features/dada/boardgame/images/12837.jpg" /&gt;  The question then arises: what's the best game about hedgehogs? According to BGG it's &lt;a href="http://boardgamegeek.com/boardgame/60056/igel-argern-tante-tarantel"&gt;Igel Ärgern + Tante Tarantel&lt;/a&gt;, a double bill in which Tante Tarantel might be doing some of that work because Igel Ärgern on its own is rated a bit lower.

&lt;p&gt;More importantly, what's the &lt;i&gt;worst&lt;/i&gt; hedgehog game? Indubitably it's &lt;a href="http://boardgamegeek.com/boardgame/12837/hedgehogs-revenge"&gt;Hedgehog's Revenge&lt;/a&gt;, "The GAME where the hedgehog STRIKES BACK!", whose BGG description includes the now-hopefully-immortal saying "To this basic game hedgehogs are added."

&lt;p&gt;&lt;img src="http://www.crummy.com/features/dada/boardgame/images/4860.jpg" align="right" title="An Evening Of Murder: Rodeo Roundup" /&gt;At this point I was on a roll... of the dice! I went back to my now-old BGG data dump, sorted the board game families by how many games they contained, and picked out interesting groupings for use in &lt;a href="http://www.crummy.com/writing/Loaded%20Dice/"&gt;Loaded Dice&lt;/a&gt;. We've got &lt;a href="http://www.crummy.com/writing/Loaded%20Dice/families.html#Games%20about%20animals"&gt;Games about animals&lt;/a&gt; (most popular: dogs) &lt;a href="http://www.crummy.com/writing/Loaded%20Dice/families.html#Games%20about%20animals"&gt;Game versions of sports&lt;/a&gt; (soccer), and &lt;a href="http://www.crummy.com/writing/Loaded%20Dice/families.html#Games%20about%20countries"&gt;Games about countries&lt;/a&gt; (the Roman Empire, in a landslide). That page shows the top-rated game and the lowest-rated game, so get ready to load a lot of cover images.

&lt;p&gt;I did a couple other lists, like media tie-ins (champion: Disney) and "families" that are strongly tied to one single game (the 889-strong "Monopoly" family), but I think the three lists I put up are the most interesting.

&lt;p&gt;Bizarre trivia abounds! Did you know that crows are board game gold? The worst game about crows (&lt;a href="http://boardgamegeek.com/boardgame/66416"&gt;The Crow and the Pitcher&lt;/a&gt;) has a BGG rating of 6.32, which isn't that bad at all. (Longtime fans will remember &lt;a href="http://www.crummy.com/writing/Loaded%20Dice/ratings.html#what-does-it-mean"&gt;the median rating is 6.0&lt;/a&gt;).

&lt;p&gt;Did you know there are &lt;a href="http://boardgamegeek.com/boardgamefamily/7560/"&gt;twenty rodeo-themed games&lt;/a&gt;? Apparently you didn't, since only one of those games has more than five ratings. How many wargames take place in Switzerland, a country that doesn't fight wars? Only two: &lt;a href="http://boardgamegeek.com/boardgame/9045/switzerland-must-be-swallowed"&gt;Switzerland must be Swallowed&lt;/a&gt; and &lt;a href="http://boardgamegeek.com/boardgame/9865/zurich-1799"&gt;Zürich 1799&lt;/a&gt;.

&lt;p&gt;My data is six months old now and it's starting to show some cracks. There are BGG families for &lt;a href="http://boardgamegeek.com/boardgamefamily/11966/country-russia"&gt;Russia&lt;/a&gt; and &lt;a href="http://boardgamegeek.com/boardgamefamily/12808/antarctic-theme"&gt;Antarctica&lt;/a&gt; which were created after I took my dataset, so they don't show up in the country list even though most of their games are in my data. After getting the Switzerland idea I ran the "What percentage of a country's games are wargames?" test on all countries, but wargames were drastically undercounted. For instance, all but one &lt;a href="http://boardgamegeek.com/boardgamefamily/10618/country-vietnam"&gt;"Vietnam" game on BGG&lt;/a&gt; is a wargame (the exception being &lt;a href="http://boardgamegeek.com/boardgame/94892/venture-vietnam"&gt;Venture Vietnam&lt;/a&gt;), but only 35% of those games were classified under a general "Wargames" category.

&lt;p&gt;&lt;img title="Trivial Pursuit - The Year in Review - Questions about 1992" align="left" src="http://www.crummy.com/features/dada/boardgame/images/12229.jpg" /&gt;But, the lists are still a lot of fun and there are some interesting games in there. I'll leave you with the board game equivalent of the dusty World Book Encyclopedia sitting on the shelf at your grandparents' house: &lt;a href="http://boardgamegeek.com/boardgame/12229/trivial-pursuit-the-year-in-review-questions-a"&gt;Trivial Pursuit - The Year in Review - Questions about 1992&lt;/a&gt;, the worst-rated game (3.90) in the 155-strong Trivial Pursuit family. &lt;a href="http://boardgamegeek.com/boardgame/12204/trivial-pursuit-the-year-in-review-questions-a"&gt;Also available in 1993 flavor!&lt;/a&gt;</description>
 <pubDate>Mon, 23 Jan 2012 15:43:02 GMT</pubDate>
 <category domain="http://www.crummy.com/nb/nb.cgi/category/nycb/">games</category>
 <guid isPermaLink="true">http://www.crummy.com/2012/01/23/0</guid>
</item>
<item>
 <title>Beautiful Soup 4 Benchmark</title>
 <description>This is going to go into the Beautiful Soup 4 documentation, but you might find it interesting. It's my first legitimate benchmark of BS4, and the first benchmark of this stuff I've seen since &lt;a href="http://blog.ianbicking.org/2008/03/30/python-html-parser-performance/"&gt;Ian Bicking's excellent 2008 benchmark&lt;/a&gt;.

&lt;p&gt;Ezio Melotti pointed me to &lt;a href="http://www.esns.us/dev/cron/top10k.txt"&gt;a list of the top 10,000 domains worldwide&lt;/a&gt;, according to some random source. It looked legit, so I wrote a script to download the homepages of the top 200 domains as served to a desktop web browser. My dataset included many pages written in Chinese, Japanese, Russian, Portuguese, Polish, and German.

&lt;p&gt;For every parser I was interested in, I parsed each homepage and
  timed the parse. This gave me 200 numbers for every parser. To
  reduce that to a single non-huge number I calculated a mean: how many
  kilobytes of real-world HTML the parser could process in a second. I
  also noted each parser's success rate: how many of the 200 homepages
  it had handled without raising an exception.

&lt;p&gt;Here are the results, ordered by their performance under Python 2.7.

&lt;p&gt;&lt;table border="1"&gt;

&lt;tr&gt;
&lt;th&gt;
&lt;/th&gt;
&lt;th colspan="2"&gt;
Python 2.7
&lt;/th&gt;
&lt;th colspan="2"&gt;
Python 3.2
&lt;/th&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;th&gt;Parser&lt;/th&gt;
&lt;th&gt;Speed (KB/s)&lt;/th&gt;
&lt;th&gt;Success rate&lt;/th&gt;
&lt;th&gt;Speed (KB/s)&lt;/th&gt;
&lt;th&gt;Success rate&lt;/th&gt;
&lt;/tr&gt;

&lt;tr&gt;
 &lt;td&gt;Beautiful Soup 3.2 (SGMLParser)&lt;/td&gt; &lt;td&gt;211&lt;/td&gt; &lt;td&gt;100%&lt;/td&gt; &lt;td&gt;-&lt;/td&gt; &lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;html5lib (BS3 treebuilder)&lt;/td&gt; &lt;td&gt;253&lt;/td&gt; &lt;td&gt;99%&lt;/td&gt; &lt;td&gt;-&lt;/td&gt; &lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;Beautiful Soup 4.0 + lxml&lt;/td&gt; &lt;td&gt;255&lt;/td&gt; &lt;td&gt;100%&lt;/td&gt; &lt;td&gt;2140&lt;/td&gt; &lt;td&gt;96%&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;html5lib (lxml treebuilder)&lt;/td&gt; &lt;td&gt;270&lt;/td&gt; &lt;td&gt;99%&lt;/td&gt; &lt;td&gt;-&lt;/td&gt; &lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;Beautiful Soup 4.0 +
  html5lib&lt;/td&gt; &lt;td&gt;271&lt;/td&gt; &lt;td&gt;98%&lt;/td&gt; &lt;td&gt;-&lt;/td&gt; &lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;Beautiful Soup 4.0 + HTMLParser&lt;/td&gt; &lt;td&gt;299&lt;/td&gt; &lt;td&gt;59%&lt;/td&gt; &lt;td&gt;1705&lt;/td&gt; &lt;td&gt;57%&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;html5lib (simpletree treebuilder)&lt;/td&gt; &lt;td&gt;332&lt;/td&gt; &lt;td&gt;100%&lt;/td&gt; &lt;td&gt;-&lt;/td&gt; &lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;td&gt;HTMLParser&lt;/td&gt; &lt;td&gt;5194&lt;/td&gt; &lt;td&gt;52%&lt;/td&gt; &lt;td&gt;3918&lt;/td&gt; &lt;td&gt;57%&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;lxml&lt;/td&gt; &lt;td&gt;17925&lt;/td&gt; &lt;td&gt;100%&lt;/td&gt; &lt;td&gt;14258&lt;/td&gt; &lt;td&gt;96%&lt;/td&gt;
&lt;/tr&gt;


&lt;/table&gt;

&lt;p&gt;Note that the "HTMLParser" tests don't actually produce anything. HTMLParser is an event-based parser, so when the HTML is parsed, nothing comes out because I didn't include any handler code. All the other tests build a parse tree in memory.

&lt;p&gt;Another thing to keep in mind about the html5lib results: html5lib is kind of the opposite of BS4. BS4 always builds a tree of Beautiful Soup objects, but you can tell it to generate that tree using html5lib, lxml, or HTMLParser. Whereas html5lib always uses its own parser, but you can tell it to build a tree of lxml objects, a tree of BS3 objects, etc. 

&lt;p&gt;The big surprise for me is that on Python 2.7, lxml is the &lt;i&gt;worst&lt;/i&gt; choice for a parser to drive BS4. It's a worse choice than html5lib! How did that happen? I have no idea. I was hoping to cash in on the lxml magic (see below), and it's not working. I need to look into this. Notice that html5lib takes a performance hit from using lxml's treebuilder. If the magic's not in the treebuilder and it's not in the parser, where is it?

&lt;p&gt;Unless I can find that magic and exploit it, it remains the case that if you're paying by the minute for computer time, you should use &lt;a href="http://lxml.de/"&gt;lxml&lt;/a&gt;. It's written in C, and on Python 2.7 it builds a parse tree sixty times faster than BS4, three times faster than a pure-Python parser that does absolutely nothing with the data. Even on Python 3, lxml alone is seven times faster than BS4+lxml. &lt;a href="http://www.crummy.com/software/BeautifulSoup/documentation.html#Beautiful%20Soup%20is%20too%20slow!"&gt;I said stuff like this in the BS3 documentation&lt;/a&gt;, but I think I need to be more forceful about it in the BS4 docs.

&lt;p&gt;The good news is that Beautiful Soup is 6-8 times faster on Python 3 than it is on Python 2, and even at its slowest, BS4 is noticeably faster than BS3.

&lt;p&gt;The big caveat is that my definition of "success" is pretty minimal. Just because the parser parsed the file without crashing doesn't mean it will give you a useful parse tree.

&lt;p&gt;Another caveat: on Python 3, I couldn't get HTMLParser to take raw bytes as   input, so I ran the data through UnicodeDammit first. I   counted this time as part of the parse time. This probably explains HTMLParser's slower speed on Python 3 &lt;i&gt;and&lt;/i&gt; its higher success rate.

&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; Argh, &lt;a href="http://www.crummy.com/2011/02/18/0"&gt;I found out about this a year ago&lt;/a&gt;. The problem is that Unicode, Dammit is incredibly slow in some cases. Here are the results on 2.7 if I take out the &lt;code&gt;prepare_markup&lt;/code&gt; methods in the builders for HTMLParser and lxml, and just assume everything's UTF-8:

&lt;p&gt;&lt;table border="1"&gt;

&lt;tr&gt;
&lt;th&gt;
&lt;/th&gt;
&lt;th colspan="2"&gt;
Python 2.7
&lt;/th&gt;
&lt;th colspan="2"&gt;
Python 3.2
&lt;/th&gt;
&lt;/tr&gt;


&lt;tr&gt;
&lt;th&gt;Parser&lt;/th&gt;
&lt;th&gt;Speed (KB/s)&lt;/th&gt;
&lt;th&gt;Success rate&lt;/th&gt;
&lt;th&gt;Speed (KB/s)&lt;/th&gt;
&lt;th&gt;Success rate&lt;/th&gt;

&lt;/tr&gt;

&lt;td&gt;Beautiful Soup 4.0 + lxml&lt;/td&gt; &lt;td&gt;2287&lt;/td&gt; &lt;td&gt;96%&lt;/td&gt;&lt;td&gt;2600&lt;/td&gt;&lt;td&gt;96%&lt;/td&gt;&lt;/tr&gt;
&lt;td&gt;Beautiful Soup 4.0 + HTMLParser&lt;/td&gt; &lt;td&gt;2069&lt;/td&gt; &lt;td&gt;48%&lt;/td&gt;&lt;td&gt;1680&lt;/td&gt;&lt;td&gt;57%&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;That's more like it! The problem is that reliability suffers. Both parsers crash in the 4% of cases where it's not UTF-8 but the encoding is declared in a &amp;lt;meta&amp;gt; tag.  And there's an unknown number of cases where the data's not UTF-8 but the conversion doesn't crash, leading to garbled data. But at least now I remember this problem.

&lt;p&gt;Also note that on Python 3.2, getting rid of Unicode, Dammit doesn't matter nearly as much. (It doesn't matter for HTMLParser at all.) Presumably Python 3.2 has better built-in support for encoding autodetection.</description>
 <pubDate>Sun, 22 Jan 2012 13:43:27 GMT</pubDate>
 <category domain="http://www.crummy.com/nb/nb.cgi/category/nycb/">beautifulsoup</category>
 <guid isPermaLink="true">http://www.crummy.com/2012/01/22/0</guid>
</item>
<item>
 <title>Beautiful Soup 4 Beta 2</title>
 <description>Thanks to some help from &lt;A href="http://wolfprojects.altervista.org/"&gt;Ezio Melotti&lt;/a&gt; I've got the Beautiful Soup test suite passing on Python 2.7 and Python 3.2. &lt;a href="http://www.crummy.com/software/BeautifulSoup/unreleased/4.x/BeautifulSoup-beta.tar.gz"&gt;Here's a tarball&lt;/a&gt; containing the original Python 2 module in &lt;code&gt;bs4&lt;/code&gt;, plus the same code autoconverted to Python 3.2 in &lt;code&gt;py3k/bs4&lt;/code&gt;.

&lt;p&gt;I'm still not sure about the best way to distribute this package, either while it's beta or afterwards. I'll probably end up creating a new project on PyPi, because otherwise people who install programs that &lt;code&gt;easy_install beautifulsoup&lt;/code&gt; will crash due to the module's new name. Does that make any sense?

&lt;p&gt;Anyhow, we're almost at the end of this fitfully travelled road. Once I figure out distribution and rewrite the documentation, a) no one should need to use BS3 anymore if they don't want to, and b) it should be possible to get lxml-like performance or html5lib-like flexibility with a Beautiful Soup API, by actually using lxml or html5lib as the underlying parser.

&lt;p&gt;PS: remember, it's now &lt;code&gt;from bs4 import BeautifulSoup&lt;/code&gt;.</description>
 <pubDate>Fri, 20 Jan 2012 21:40:15 GMT</pubDate>
 <category domain="http://www.crummy.com/nb/nb.cgi/category/nycb/">beautifulsoup</category>
 <guid isPermaLink="true">http://www.crummy.com/2012/01/20/0</guid>
</item>
<item>
 <title>CG Author Commentary #8: "They Came For Our Twinkies"</title>
 <description>K'chua! Such a useful word. This week, Curic does her part to Keep Austin Weird.  Here's &lt;a href="http://constellation.crummy.com/microblog.html#chap7"&gt;the (tiny) Twitter archive&lt;/a&gt; from last week.

&lt;p&gt;&lt;a href="http://commons.wikimedia.org/wiki/File:Hostess_twinkies.jpg"&gt;&lt;img src="http://www.crummy.com/graphics/nycb/2012/01/twinkies.jpg" title="Hostess Twinkies" align="left"/&gt;&lt;/a&gt;

&lt;p&gt;Some exciting news from the world of commerce: the &lt;i&gt;Constellation Games&lt;/i&gt; paperback drops April 17. If you're waiting for the paperback, do yourself a favor and &lt;a href="http://www.candlemarkandgleam.com/store/delivery/constellation-games-serial/"&gt;pre-order at the $20 level&lt;/a&gt;. Once it's released, the paperback will cost $20 on its own, but if you pre-order, you'll also get a bunch of extras, including three short stories that all pass the Bechdel test.

&lt;p&gt;The seventeenth of April is also the day we serialize chapter 21, "Her". I'm going to keep posting my commentaries once a week along with the serialization, even though a growing number of you will have read the whole book and know how it turns out. Then you'll know how I feel right now!

&lt;p&gt;I'm also thinking of having a celebratory book launch dinner at Hill Country, a famous Austin-area barbecue joint that &lt;a href="http://www.hillcountryny.com/"&gt;fortuitiously has a branch in New York City&lt;/a&gt;. Let me know if you're interested in attending.

&lt;p&gt;...and we're back from commercial. Here's the commentary for chapter 8:

&lt;ul&gt;

&lt;li&gt;Hopefully this chapter doesn't seem too special now, but
when I first wrote it it was a revelation. It was a narrative with a
plot! Curic was an active character and you could see her chemistry
with Ariel as they physically interacted! My writing group indicated
in no uncertain terms that this was the stuff they had been waiting
for.

&lt;p&gt;I wrote a couple more chapters in the old, boring style but it
wasn't long before I gave up and started the second draft, which tried
to make the whole book more like this chapter. To this end I
introduced innovations like the long IM conversations, and
Jenny. Imagine reading up to this point, except Jenny has only been
mentioned once and Curic has only had three lines of dialogue. That
was the first draft.

&lt;li&gt;&lt;a href="http://commons.wikimedia.org/wiki/File:Fractal_tree_%28Plate_b_-_1%29.jpg"&gt;&lt;img src="http://www.crummy.com/graphics/nycb/2012/01/fractal_tree.jpg" title="Fractal tree. Secret call-forward to Chapter 30." align="right" /&gt;&lt;/a&gt;Because of its importance to the book's history, and also because
it's such a great set piece, I kept coming back to this chapter. Near
the end of the book, I recontextualize it by showing the visit to
Earth from Curic's perspective. And Jenny's remark that the plastic
fractal "looks like Skewer Sue's bracelet" fed, as I hinted a few
weeks ago, into one of the book's most important scenes.

&lt;p&gt;Which almost didn't happen. At this point I'd decided that Jenny
was a big comics nerd and wanted her to reference a kinda bland comic
book character name. My first try was "Titania". Well, the joke was on
me because &lt;a
href="http://en.wikipedia.org/wiki/Titania_%28Marvel_Comics%29"&gt;Titania
is an actual Marvel villain&lt;/a&gt;. Sumana says she showed up during Dan Slott's run on
She-Hulk, so that's probably where I got it, but I don't remember
her. Bland, but already taken. Titania was out. Then I came up with
"Skewer Sue", which is not a top-tier name like "Wonder Woman", but is
definitely not bland. Then I decided "why should I deliberately come
up with bland names?" and went with Skewer Sue. Believe me when I
say that if I'd been able to name that character Titania, the
offhand reference would have stayed offhand forever.

&lt;p&gt;...And I can't even tell you all the other things in this chapter
that become important later. Because they're all huge spoilers. But in
one case also because it's quite embarrassing to admit how long I took to realize that I could reuse something. I should have called this chapter "Guns on the Mantelpiece". (Actually, I should have called the second chapter "Guns on the Mantelpiece"; I never liked "Corner Pieces".)

&lt;li&gt;Jenny's nephew Eduardo does not really show up again, except in the
Twitter feeds and one of the deleted scenes, but if you want to make
your protagonists look good you should show them doing nice things for
kids. Just a little tip I picked up in Sid Meier's screenwriting
class.

&lt;p&gt;Eddie was originally the son of Jenny's brother, James, who never shows up at all. I don't remember why James became Jenny's sister, but when I changed it I de-named the character so as not to use up a "named character" slot in your head.

&lt;p&gt;Actually, rereading this, I notice I didn't give Eddie any
lines. That was kind of sloppy. I'd retcon it by saying he's intensely
shy around Curic, but Curic's account of the day contradicts this! Oh
no.

&lt;li&gt;&lt;a href="http://commons.wikimedia.org/wiki/File:Leisure_dartboard.PNG"&gt;&lt;img src="http://www.crummy.com/graphics/nycb/2012/01/dartboard.png" title="Dartboard" align="right"/&gt;&lt;/a&gt; The star-draw was added in the third draft. There's another
star-draw in chapter 20, but a lot of other stuff is happening in that
scene, and Ariel wasn't actually there for it, so the exposition was
very difficult. Putting a star-draw here takes some of the load off
the chapter 20 scene, and--only later did I realize this was much more
important--shows you a fluid overlay in action. Albeit a two-person
fluid overlay because Jenny and Bai are slackers and Eddie's a little
kid.

&lt;li&gt;The celebrity voices used for the different ET vocalizers are a tiny import from "Vanilla", in which (among other things) the protagonist was shaken down by an ET who sounded like Garrison Keillor. Now that I write that down, I realize that I've only got one joke about this, because there's a very similar incongruous-voice bit in chapter 21. Maybe I should have declined to import this particular thing from "Vanilla"... it feels like an artifact from a less mature stage of my style.

&lt;li&gt;The bit where Bai introduces Dana to Curic was added after I sold
the book, at editorial request to get more Dana early in the
story. You'll thank my editor later.

&lt;li&gt;And I don't know when all of this came together, but I love
Curic's mix of anthropological curiosity, disinclination to tolerate
bullshit, and bizarre opinions on what's bullshit. Her
reactions to Dana, to "Eddie wants to be an astronaut", and to the
revelation that "fuck" is a swear word... she's got all the best
lines. And she does the game reviews! This is the chapter where Curic
came alive for me. Metaphorically.

&lt;/ul&gt;

&lt;p&gt;Stay tuned for the inevitable letdown next Tuesday, when Curic will say, "I did not pee in your sink."

&lt;p&gt;&lt;i&gt;Image credits: &lt;a href="http://commons.wikimedia.org/wiki/File:Hostess_twinkies.jpg"&gt;(CC) Larry D. Moore&lt;/a&gt; and Wikimedia Commons users &lt;a href="http://commons.wikimedia.org/wiki/File:Fractal_tree_%28Plate_b_-_1%29.jpg"&gt;Solkoll&lt;/a&gt; and &lt;a href="http://commons.wikimedia.org/wiki/File:Leisure_dartboard.PNG"&gt;SeppVei&lt;/a&gt;.&lt;/i&gt;

&lt;p&gt;&lt;a href="http://www.crummy.com/2012/01/10/0"&gt;&amp;lt;- Last week&lt;/a&gt; | &lt;a href="http://www.crummy.com/2012/01/24/0"&gt;Next week -&amp;gt;&lt;/a&gt;</description>
 <pubDate>Tue, 17 Jan 2012 14:10:43 GMT</pubDate>
 <category domain="http://www.crummy.com/nb/nb.cgi/category/nycb/">Constellation%20Games</category>
 <guid isPermaLink="true">http://www.crummy.com/2012/01/17/0</guid>
</item>
<item>
 <title>Findings</title>
 <description>My writing life has settled down a bit so I'm finally going to write about &lt;a href="https://findings.com/"&gt;Findings&lt;/a&gt;, the social reading startup where I worked last summer. This is more an essay about what I see in Findings than an introduction to the site--you can see lots of general introductions &lt;a href="http://blog.findings.com/post/12296421739/findings-post-launch-recap"&gt;linked to from this Findings blog post&lt;/a&gt;, including &lt;a href="http://www.stevenberlinjohnson.com/2011/10/introducing-findings.html"&gt;co-founder Steven Johnson's introduction&lt;/a&gt;, and the &lt;a href="http://www.businessinsider.com/findings-is-github-for-ideas-2011-11"&gt;Business Insider article&lt;/a&gt; whose title is the perfect elevator pitch, "Findings is GitHub for Ideas". 

&lt;p&gt;If what I'm about to say sounds interesting to you, &lt;a href="https://findings.com/jobs"&gt;there are development jobs open at Findings right now&lt;/a&gt;. Just as a reminder, I myself don't work at Findings anymore, and even when I did, only the foggyheadedest knave would have taken my personal opinions as representative of company policy. 

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/mckaysavage/1982872745/"&gt;&lt;img title="Curious monkey" src="/graphics/nycb/2012/01/monkey.jpg" align="right" /&gt;&lt;/a&gt;Let me start out with &lt;a href="https://findings.com/leonardr/finding/165398"&gt;this quote I took&lt;/a&gt; from Darwin's &lt;i&gt;The Descent of Man&lt;/i&gt;&lt;/a&gt;, not because the quote itself proves anything, but because the quote is an important part of my reading of Darwin:

&lt;blockquote&gt;
Brehm gives a curious account of the instinctive dread, which his monkeys exhibited, for snakes; but their curiosity was so great that they could not desist from occasionally satiating their horror in a most human fashion, by lifting up the lid of the box in which the snakes were kept. I was so much surprised at his account, that I took a stuffed and coiled-up snake into the monkey-house at the Zoological Gardens, and the excitement thus caused was one of the most curious spectacles which I ever beheld. 
&lt;/blockquote&gt;

&lt;p&gt;If you want to learn about evolutionary biology, read Steven Jay Gould's essays. Darwin's a good writer and he got it basically right, but he didn't know about genes or DNA. I read Darwin to experience the origins of the field. I didn't expect (though perhaps I should have) to encounter endless  artifacts of the days of two-fisted Baconian science.

&lt;p&gt;When Charles Darwin needs to figure something out, he carries out an experiment,
no matter how tedious or disturbing. He takes snakes to the zoo, he &lt;a href="https://findings.com/leonardr/finding/165399"&gt;puts kittens' feet in his mouth&lt;/a&gt;, he &lt;a href="https://findings.com/leonardr/finding/11590"&gt;floats 94 kinds of plants in seawater&lt;/a&gt;, he &lt;a href="https://findings.com/leonardr/finding/11604"&gt;hacks aphids&lt;/a&gt;. If someone has the temerity to question his conclusions he's all &lt;a href="https://findings.com/leonardr/finding/165409"&gt;"Citation needed? I'll give you citations, motherfucker!"&lt;/a&gt;

&lt;p&gt;When you read a book, it has an effect on your mind. You're a slightly different person after reading it. You've created something new: a &lt;i&gt;reading&lt;/i&gt; of the book: Here's an apropos quote from Alberto Manguel's &lt;i&gt;A History Of Reading&lt;/i&gt;, which I read on paper and typed in. Manguel is talking about Petrarch's &lt;A href="http://petrarch.petersadlon.com/secretum.html"&gt;&lt;i&gt;Secretum&lt;/i&gt;&lt;/a&gt;:

&lt;blockquote&gt;
What Augustine (in Petrarch's imagining) suggests is a new manner of
reading: neither using the book as a prop for thought, nor trusting it
as one would trust the authority of a sage, but taking from it an
idea, a phrase, an image, linking it to another culled from a distant
text preserved in memory, tying the whole together with reflections of
one's own -- producing, in fact, a new text authored by the reader.
&lt;/blockquote&gt;

&lt;p&gt;Readings are ephemeral. Life goes on, and the memory fades. Ken Macleod's &lt;i&gt;The Star Fraction&lt;/i&gt; had a huge influence on me, probably leading to whatever career I now enjoy as an author of fiction, but I read it ten years and 600 books ago, and now I don't remember a damn thing about it.

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/nauright/5305432795/"&gt;&lt;img title="Don't take notes in library books." src="/graphics/nycb/2012/01/library_book.jpg" align="right"/&gt;&lt;/a&gt;That's why we dog-ear pages and highlight passages. We're instantiating our reading of the book so we can go back later and approximate the mental state it gave us without re-reading the whole thing. Even if all we got out of a book was "this bit was funny", it's better to have the funny bit at hand than not. Even if you never go back to the highlighted passage, the act of highlighting replays that passage and deepens your initial memory of it.

&lt;p&gt;&lt;b&gt;Liberate your readings&lt;/b&gt;

&lt;p&gt;I've been typing in quotes from the paper books I read, like I did with the Manguel. Of course, with an electronic book, you don't have to do this. The act of highlighting creates an  electronic record of your reading of the book. When I was in college I read about the first e-ink research coming out of MIT, and I knew that this was the future. Indeed it was the future, because I had to wait ten years for the technology to make it to market. But, sour grapes, we've got ebook readers now.

&lt;p&gt;Ebook readers have big problems, but at this point the problems are mostly political, not technical. For instance, you can highlight passages when reading a book on your Kindle, but because of a deal between Amazon and the publisher, your book's metadata may include restrictions, which the Kindle will obey, on &lt;i&gt;how much&lt;/i&gt; you can highlight. And your highlights and notes&amp;mdash;the "new text authored by the reader"&amp;mdash;are stuck on &lt;a href="https://kindle.amazon.com/"&gt;a website&lt;/a&gt; that Amazon didn't put a lot of work into because they don't consider your reading of a book important to their business.

&lt;p&gt;Findings takes advantage of the fact that Amazon is wrong about this. Findings liberates your highlights and makes them searchable and shareable. Your reading of a book is a big part of your relationship with that book, and Findings gives you access to it.

&lt;p&gt;You can also use Findings to take a reading of a web page, creating a record of what would otherwise be an ephemeral activity. I'm not as interested in this feature, but people are using it quite a bit, and my interest does increase as the length of the web page I'm reading approaches the length of a book.

&lt;p&gt;&lt;b&gt;Browse readings&lt;/b&gt;

&lt;p&gt;So that's what Findings can do for you personally. Now let me pitch you the network effects. Take a look at this screenshot which shows the Findings global stream:

&lt;p&gt;&lt;img align="center" border="1" src="/graphics/nycb/2012/01/findings.png" title="Findings global stream" /&gt;

&lt;p&gt;You can't see the global stream without logging in, which I think is a shame because I think this is what really sells Findings. We have here a stream of little bits of text, like Twitter used to have on their front page. Except here, every bit of text is a quote that someone liked well enough to save. It's very high-quality stuff. At the top you can also see some recently added books, and by clicking on a book you can see someone's condensed reading of the book.

&lt;p&gt;Basically, Findings gives you browsing access to a large library, not of books, but of &lt;i&gt;readings&lt;/i&gt;. It's easy to discover new books, people who read books you like, and&amp;mdash;this is new&amp;mdash;people who read books &lt;i&gt;in ways&lt;/i&gt; you like. 

&lt;p&gt;There are a ton more useful things I could mention, but they're mostly behind-the-scenes things where Findings makes things "just work" (like consolidating multiple editions of the same text), or they depend on features that haven't been implemented yet. So I'm going to close by mentioning the social signalling feature.

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/24595346@N08/5498976479/sizes/m/in/photostream/"&gt;&lt;img title="'Nausea'" align="left" height="400" src="/graphics/nycb/2012/01/sartre.jpg"&gt;&lt;/a&gt;&lt;b&gt;Strut your stuff&lt;/b&gt;

&lt;p&gt;One underappreciated feature of paper books is signaling to other people that you are cool. You read books! Fancy books, like &lt;i&gt;Ulysses&lt;/i&gt;!  You care enough about books to make space for them in your house. You take them on the subway even though they're heavy. Darwin would say it's like the peacock's tail. But if you have an ebook reader, nobody knows how cool you are. You're just a person with an ebook reader.

&lt;p&gt;By letting you publicize your reading of an ebook, Findings reinstates your ability to send those social signals.  The downside is that you have to actually read the book. You can't just put a big book on your coffee table: the thing you're sharing is what you got out of the book. (Well, you can fake it, but it's probably about as much work as reading the book legitimately.)

&lt;p&gt;So that's Findings. I don't use it as much as I thought I would, because I'm still trying to draw down my stack of paper books, but when I read a book on my Kindle, it stays read, thanks to Findings.

&lt;p&gt;I mentioned this before, but the last thing I did at Findings was design a web service for them, which they're hopefully working on now. Once the web service launches, you'll be able to write programs that import readings into Findings from non-Kindle sources.

&lt;p&gt;&lt;b&gt;Do it yourself&lt;/b&gt;

&lt;p&gt;One final note: If you have a Kindle, connect it to your computer and look on its filesystem. All your highlights are kept in a structured-text file located at &lt;code&gt;documents/My Clippings.txt&lt;/code&gt;. This file includes highlights taken from PDF files and other ebooks not recognized by Amazon, which don't get synced to kindle.amazon.com. Even if you don't use Findings, take control of your highlights by backing up this file.

&lt;p&gt;&lt;i&gt;Image credits: &lt;a href="http://www.flickr.com/photos/mckaysavage/1982872745/"&gt;McKay Savage&lt;/a&gt;, &lt;a href="http://www.flickr.com/photos/nauright/5305432795/"&gt;Romana Klee&lt;/a&gt;, and &lt;a href="http://www.flickr.com/photos/24595346@N08/5498976479/sizes/m/in/photostream/"&gt;Andr&amp;eacute; Fincato&lt;/a&gt;.&lt;/i&gt;</description>
 <pubDate>Mon, 16 Jan 2012 14:50:56 GMT</pubDate>
 <category domain="http://www.crummy.com/nb/nb.cgi/category/nycb/">literature</category>
 <guid isPermaLink="true">http://www.crummy.com/2012/01/16/0</guid>
</item>
<item>
 <description>&lt;a href="http://www.crummy.com/swishina/2012/01/11/0"&gt;My sister talks about her miscarriage.&lt;/a&gt;

&lt;blockquote&gt;
The only thing worth saying is "I'm sorry." I may think those things. John and I may even say those things to each other. But don't impose beliefs or possibilities or happy thoughts on me.
&lt;/blockquote&gt;</description>
 <pubDate>Thu, 12 Jan 2012 13:17:39 GMT</pubDate>
 <category domain="http://www.crummy.com/nb/nb.cgi/category/nycb/">people/Susanna%20Richardson</category>
 <guid isPermaLink="true">http://www.crummy.com/2012/01/12/0</guid>
</item>
<item>
 <title>Hostile Witness: The Vechs Interview</title>
 <description>Minecraft can be a tough game. The controls are kind of blocky, the
best resources are hidden deep in the map alongside deadly lava
rivers, and the night hosts monsters that will kill you just as soon
as look at you (or, in &lt;a
href="http://www.minecraftwiki.net/wiki/Enderman"&gt;one case&lt;/a&gt;, just
as soon as you look at them). But it's not &lt;i&gt;that&lt;/i&gt; tough. All that
terrain is generated by algorithm. It's not like the random number
generator is trying to kill you.

&lt;p&gt;&lt;img align="right" src="/graphics/nycb/2012/01/library.png" title='The Blackened Library, from "Spellbound Caves"' hspace="10" &gt; But there's this guy named Vechs who &lt;i&gt;is&lt;/i&gt; trying to kill
you. His &lt;a
href="http://www.minecraftforum.net/topic/191908-ctmcollection-%E2%98%A0-vechs-super-hostile-series-%E2%98%A0/"&gt;"Super
Hostile" series of custom Minecraft maps&lt;/a&gt; offer challenges that
prohibit or subvert every survival strategy you learned in vanilla
Minecraft. Even in his easier maps you'll find bottomless pits,
world-spanning ceilings that block Minecraft's all-important sunlight,
swarms of monsters pouring from hacked spawners, and TNT in
unfortunate places. Just getting your first tree is a
challenge. Complete a Super Hostile map, and vanilla Minecraft will
seem easy.

&lt;p&gt;But Vechs' maps are not just tough: they're creative, fun to play, and they
look great. Vechs uses landscape features and lighting to grab the
player's attention, direct the flow and pacing of their playthrough,
and give them a spectacular environment to build in once they've
conquered the map.

&lt;p&gt;I've raved about Super Hostile a couple times
before here on NYCB, but with the release of "Spellbound Caves", the
tenth entry in the series, I knew it was time to get
serious. I sat down with Vechs (I assume he was sitting down, anyway)
and interviewed him over minecraftforum.net's private message
feature. My goal was to pick up &lt;a
href="http://www.theobsidianblock.com/vechs-interview-creator-of-super-hostile"&gt;where
this interview from July 2011 left off&lt;/a&gt;, with in-depth questions about his style and his mapmaking wish-list. The interview contains some Minecraft jargon, but anyone with an interest in game design should get something out of it.

&lt;hr /&gt;

&lt;p&gt;&lt;i&gt;&lt;b&gt;Leonard:&lt;/b&gt; You play a kind of character on your maps, an
angry trickster god who hates his players and taunts them by writing
things on signs. But clearly you're not actually like that. I've
played maps made by people who really did hate me, who wanted me to
farm cobblestone for an hour or dig through obsidian without a tool,
and I said "screw this" and quit the map. I don't think you'd ever do
that, right? What's the difference between you and the "Vechs" in your maps?&lt;/i&gt;

&lt;blockquote&gt;&lt;b&gt;Vechs:&lt;/b&gt; It has to do with challenge. There is a difference
between making the player use skill or ingenuity, and making the player
do something tedious. Sometimes a solution to an area can involve
using lots of blocks (Like the player making a cobblestone tube for
them to safely move through.), but these are usually just one option
of many the player can use to conquer an area.

&lt;p&gt;Sometimes the "Vechs character" in my maps is pretty mean, and just
downright spiteful, especially when it comes to traps. In real life,
I'm not like that at all.&lt;/blockquote&gt;

&lt;p&gt;&lt;i&gt; In the Obsidian Block interview you say that you
recently graduated from college and are looking for a career as a game
designer or world designer. What did you study in college?&lt;/i&gt;

&lt;blockquote&gt; I am a Media Arts major. I studied everything from
digital image editing, video editing, to stage lighting, to writing
scripts and screenplays for movies, and more. I'm glad to have a
diverse background, even though my passion is still game design.&lt;/blockquote&gt;


&lt;p&gt;&lt;i&gt; What would be your ideal job? Would you rather
work on a big-budget project with high production values, or an indie
project where you have more creative control?&lt;/i&gt;

&lt;blockquote&gt;My first choice would actually be to have my own
studio and bring to life some of the game ideas I have. One idea I've
had for a while, and as far as I know, nobody has ever made a game
like it. I wouldn't mind making it all myself, but that means I would
have to re-learn a lot of programming. I've programmed some text-based
games in C++, but programming is not my main forte.

&lt;p&gt;That said, I also wouldn't mind working for a major company. Like,
for example, Valve. Love those guys.&lt;/blockquote&gt;

&lt;p&gt;&lt;i&gt; What other games have you made maps for? You
mention Duke Nukem 3D in the Obsidian Block interview; what
else?&lt;/i&gt;&lt;/p&gt;

&lt;blockquote&gt;Just off hand: Red Alert, Warcraft II, Warcraft III,
Neverwinter Nights, Total Annihilation, TA:Spring, Terraria, Command
and Conquer (and several sequels), The Elder Scrolls series, and
obviously I'm the world designer for the RPG games I've worked on,
using the XP and VX engines.&lt;/blockquote&gt;


&lt;p&gt;&lt;i&gt;Are you currently making maps for any games
other than Minecraft?&lt;/i&gt;

&lt;blockquote&gt;At this moment, no, but I have been meaning to make some maps
for Team Fortress 2.&lt;/blockquote&gt;

&lt;p&gt; &lt;i&gt;Have you ever heard of ZZT or Megazeux, or am I just incredibly old?&lt;/i&gt;

&lt;blockquote&gt;You're old! *grins* I looked them up, and I think my version of that would be the RPG-series of game engines.&lt;/blockquote&gt;

&lt;p&gt;&lt;img align="right" src="/graphics/nycb/2012/01/station.png" title='Just outside the rail station in "Sea of Flame II"'&gt; &lt;i&gt;There are a lot of memorable set pieces in the
Super Hostile series. Now that you've put out ten maps, would you mind
taking a look back and sharing some of your favorites?&lt;/i&gt;

&lt;blockquote&gt;The first 15 minutes on just about any of my maps. I
love that feeling of just starting off and scrambling for resources. I
like the rail station in "Sea of Flame II", and how it goes out in the
area with the huge pillars, and "Spellbound Caves" is just full of nice
vistas and "scripted" events.

&lt;p&gt;Most of my maps feature at least one "death fortress" as an
end-game area. These are intended to be where the player gets to use
all the resources and items he has been collecting through the whole
map. TNT, lava, swords, bow and arrow, even TNT cannons... bring your
whole arsenal and have some fun!&lt;/blockquote&gt;

&lt;p&gt; &lt;i&gt;Can you describe the evolution of your design
philosophy over the course of the series?&lt;/i&gt;

&lt;blockquote&gt;Try to improve in at least one area every time I make
a new map. Push the Minecraft engine to its limits. Make an awesome
and memorable experience for the player.&lt;/blockquote&gt;

&lt;p&gt; &lt;i&gt;What are the biggest challenges in re-balancing
Super Hostile for Minecraft 1.0?&lt;/i&gt;

&lt;blockquote&gt;Armor and blocking.&lt;/blockquote&gt;

&lt;p&gt; &lt;i&gt;Does 1.0 have anything to do with the fact that
you recently flattened the difficulty levels in your map descriptions, so that
"Sunburn Islands" and "Legendary" are now both considered "Easy"?&lt;/i&gt;

&lt;blockquote&gt;Yes and no. I feel that recently I have been drifting
away from the theme of "Super Hostile" and I want to get back to my
roots. Being able to respawn forever, over and over kind of takes the
risk out of a map. Even in "Legendary", unless you really mess up and drop
all the wool in lava or something, you can just set your bed spawn
near an area, and try over and over until you get it right. I think
that's pretty Easy on the player, even if the area you are attempting
is challenging.

&lt;p&gt;Call me nostalgic, but I kind of miss (sometimes) the GAME OVER
screens from older video games. Modern video games, in the name of
convenience, typically feature unlimited lives, save games,
checkpoints, the works. But beating a modern video game, I have to
admit, is much less satisfying than beating some of those old NES
games. You can just bang your head against the game until you get
lucky and get through an area. Heh, man this makes me feel old! "In my
day, we didn't have all those checkpoints! We had three lives! One hit
deaths! And we were happy!" *shakes cane*

&lt;p&gt;Anyway, I do think this is a legitimate point of concern on modern
game design, is risk versus reward. It is possible to make games so
easy that they are very unsatisfying...&lt;/blockquote&gt;

&lt;p&gt; &lt;i&gt; I'm an admirer of your ability to create new
 genres of map. Have you made experimental Minecraft maps that just
didn't work? What's in your "abandoned projects" folder?&lt;/i&gt;

&lt;blockquote&gt;The only thing I've actually stopped on, is "Race for
Wool #3: Common Ground". Because it basically became "Capture the Wool".&lt;/blockquote&gt;

&lt;p&gt;&lt;img align="right" src="/graphics/nycb/2012/01/race.png" title='"Race For Wool #1: Hostilities Begin"' /&gt; &lt;i&gt;Have you ever made maps for a game that
featured scriptable events?  If so, do you miss that capability in
Minecraft?&lt;/i&gt;

&lt;blockquote&gt;I have used C++ to code some text-based games. I have
also used various scripting languages in the process of making mods or
making my own games with existing engines. You do have some limited
"scripting" ability in Minecraft, using redstone. Check out the
Rumbling Caverns in my tenth map and you will see what I mean. :)

&lt;p&gt;But yes, I would love some even rudimentary scripting in
Minecraft. I believe a while ago, I proposed invisible effector
blocks, that you can place with Creative or MCedit, that modify the
immediate environment around them. Like, an invisible block that makes
monsters not spawn within 50 blocks. Or one that doubles monster
spawning within 50 blocks. Or one that makes it snow. Or one that
makes a ray of sunlight always be shining on that spot. Or one that
makes the temperature freezing so any water turns to ice. Simple stuff
like that. They would show up faintly in Creative mode, but be
invisible while in survival mode.&lt;/blockquote&gt;

&lt;p&gt; &lt;i&gt;What would you like to see added
to Minecraft? On your forum thread you mention that
you'd like to add sharks and underwater plants to "Endless Deep". What
else?&lt;/i&gt;

&lt;blockquote&gt;Bow enchantments... more mining enchantments, such as
area mining. Check out episodes &lt;a
href="http://www.youtube.com/watch?v=Y686m7KC28s"&gt;04&lt;/a&gt; and &lt;a
href="http://www.youtube.com/watch?v=UrlGlOwgtFM"&gt;05&lt;/a&gt; of my
Spellbound Caves Dev Commentary.

&lt;p&gt;For bow enchantments, I would like:

&lt;ul&gt;
&lt;li&gt;Piercing (Arrows go through monsters and cause damage in a straight line.)
&lt;li&gt;Toxic (Arrows cause poison.)
&lt;li&gt;Fire (Arrows ignite enemies.)
&lt;li&gt;Knockback (Arrows cause knockback.)
&lt;li&gt;Phantom Spreadshot (In addition to your one normal arrow, you fire out additional ghost arrows (higher ranks provide more) that act like normal arrows, only you cannot pick them up, and they quickly vanish after hitting the ground.)
&lt;li&gt;Explosive (Arrows cannot be reclaimed and cause a small explosion, could possibly be combined with the fire enchant, so arrows function like ghast projectiles, causing an explosion and leaving fire.)
&lt;li&gt;Charge Speed (You charge your bow faster.)
&lt;li&gt;Unbreaking (Your bow lasts longer.)
&lt;/ul&gt;

&lt;p&gt;I think these enchants for bows would make bow combat much, much
more fun. It's currently fairly slow paced, and a bit boring. Imagine
a bow with Toxic, Piercing, and Phantom Spreadshot on it! It would be
so much fun to shoot groups of enemies with a bow like that.&lt;/blockquote&gt;

&lt;p&gt; &lt;i&gt; You have a creative relationship with some of
the people who do Let's Play videos of your maps. It's a kind of
relationship I've never seen before: the way people play your maps in
public affects the way you design later maps. How did these
relationships develop?&lt;/i&gt;

&lt;blockquote&gt;Very organically. &lt;a href="http://www.youtube.com/user/Zisteau"&gt;Zisteau&lt;/a&gt; agreed to LP my very first
map, "Sea of Flames" version 1.0, and ever since then, he's been
involved in playing my maps, and giving feedback.&lt;/blockquote&gt;

&lt;p&gt; &lt;i&gt; There's a very clever trap in "Spellbound Caves",
[location redacted]. It's clever for many reasons, but I'm
asking about it because it doesn't seem to have any triggering
mechanism. I went in afterwards and took the walls apart and couldn't
figure out how it works. What's the secret? Or is there a pressure plate somewhere
that I missed?&lt;/i&gt;

&lt;blockquote&gt;I has a seekret. Oh, also, I hate you, die in a fire.&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;b&gt;POSTSCRIPT&lt;/b&gt;: With my interviewee uncooperative, I had no choice but to load a fresh version of "Spellbound Caves" into an editor to get to the bottom of the mystery. What I found was a trigger that did not shock me to the core of my being. But it is a cool design.

&lt;p&gt;The trigger is a proximity sensor: a shaft behind a wall, with a creeper spawner at the top of the shaft and a pressure plate at the bottom. When the player gets within 16 blocks of the spawner, it activates and spawns a creeper, which drops onto the pressure plate, triggering the trap. The resulting explosion obliterates both creeper and spawner, leaving no trace of the trigger.

&lt;p&gt;And that's what you get with Vechs' maps: MacGyver-like use of everything the game engine provides, to create confounding and unexpected effects. Seriously, game studios: hire this guy. Everyone else: play his maps.

&lt;hr /&gt;

&lt;p&gt;&lt;b&gt;PPS:&lt;/b&gt; Hey, people from minecraftforums.net, thanks for coming over. I've written other articles about Minecraft (&lt;a href="http://www.crummy.com/2011/11/16/0"&gt;1&lt;/a&gt; &lt;a href="http://www.crummy.com/2011/11/19/0"&gt;2&lt;/a&gt; &lt;a href="http://www.crummy.com/2011/12/08/0"&gt;3&lt;/a&gt; &lt;a href="http://www.crummy.com/2011/12/14/0"&gt;4&lt;/a&gt;), and if you like my stuff, you might want to check out &lt;a href="http://www.candlemarkandgleam.com/store/delivery/constellation-games-serial/"&gt;my novel about alien video games&lt;/a&gt;.</description>
 <pubDate>Tue, 10 Jan 2012 15:42:33 GMT</pubDate>
 <category domain="http://www.crummy.com/nb/nb.cgi/category/nycb/">games</category>
 <guid isPermaLink="true">http://www.crummy.com/2012/01/10/1</guid>
</item>
<item>
 <title>CG Author Commentary #7: "Party Creation"</title>
 <description>Ariel's Twitter will be pretty quiet this week because the entire
chapter takes place over the course of one day. Your only solace is &lt;a href="http://constellation.crummy.com/microblog.html#chap6"&gt;farmers market quail sausage&lt;/a&gt;, and this COMMENTARY:


&lt;ul&gt;

&lt;li&gt;&lt;img src="http://www.crummy.com/graphics/nycb/2012/01/crime.jpg" title="Blonde with a gun" align="left" hspace="15"/&gt;
In this chapter we meet Bai's girlfriend, Dana Light. Sort
of. Dana is the bane of this minimal-spoiler commentary because it's a
bit of a spoiler even to treat her as an important character instead
of a bit of character development for Bai. But she is important--Bai
was defined in terms of Dana, not the other way around, and I found
Dana interesting enough to make her the star of the first bonus story,
"Dana no Chousen."

&lt;p&gt;Chapter 10 will be a very Dana-heavy chapter. If I hadn't been
writing a novel when I came up with the character, that chapter would
have become a standalone short story. Of course, once I had the
character, Dana quickly became important to the story (spoiler!!) and
after selling the book I moved bits from Chapter 10 backwards into
this chapter so as to introduce her earlier.

&lt;p&gt;More on Dana and Dana/Bai in a few weeks when I commentate chapter
10, but for now you might enjoy going back to chapters 3 and 4 and
re-reading the earlier references to her.

&lt;li&gt;Bai is pretty ditzy when it comes to women, because that was the
only way I could get him into this relationship without making him
stupid or a &lt;u&gt;Love Plus&lt;/u&gt;-style otaku. If I was a better writer I
might have come up with a better solution, but I'm at the level I'm
at. However, there are a couple moments later on when Bai is
surprisingly perceptive about &lt;i&gt;Ariel's&lt;/i&gt; love life.

&lt;li&gt;&lt;img title="Spices and oils" align="right" src="/graphics/nycb/2012/01/spices.jpg" /&gt;The other introduction in this chapter is &lt;u&gt;Sayable
Spice&lt;/u&gt;, probably the game most important to the plot. In the
second draft, Ariel talked about &lt;u&gt;Sayable Spice&lt;/u&gt; a whole lot, but
it wasn't until chapter 14 that he mentioned that he was working on a
remake. Now Jenny forces Ariel to commit and puts a stop to that
nonsense right quick. Thanks, Jenny.

&lt;li&gt;When I got rid of Bruce, the character you'll never see, I gave
most of his scenes to Bai. (Eg. it was originally Bruce playing Knockdown Dragout in chapter 4.) I'm pretty sure the scene in the backyard
here is the only Bruce scene I gave to Jenny. Nobody cares!

&lt;li&gt;This is also the only chapter in which Bizarro Kate has a speaking part. In the second and third drafts, she hooked up with Bruce at this chapter's cookout, and later in the novel they were living together. Hers was a supporting role to begin with, and when I eliminated her major-character boyfriend, she got 
&lt;a href="https://twitter.com/#!/leonardr/status/99197770048606209"&gt;cut down to just a walk-on&lt;/a&gt;. But I really like the character, and I gave her a chance to shine (ie. be cranky) in "Found Objects", the Jenny story.

&lt;li&gt;I think &lt;u&gt;Tennis For Two&lt;/u&gt; is the only real-life video game I
mention in the novel. There was no other way to get the joke to work. 

&lt;li&gt;The tattoo joke &lt;a href="http://www.crummy.com/2011/12/21/0"&gt;I had to cut&lt;/a&gt; from chapter 19 has landed on Twitter. Relive the saga: &lt;a href="https://twitter.com/#!/ArielBlum/status/154671451641884672"&gt;1&lt;/a&gt; &lt;a href="https://twitter.com/#!/ArielBlum/status/154676231005151233"&gt;2&lt;/a&gt; &lt;a href="https://twitter.com/#!/ArielBlum/status/154676481988112384"&gt;3&lt;/a&gt; &lt;a href="https://twitter.com/#!/ArielBlum/status/154691082834288640"&gt;4&lt;/a&gt;. I don't think I needed to actually present the translation. Oh well.

&lt;li&gt;Around this time I planned on changing Ariel's Twitter profile image to the duck from the Crispy Duck Games logo, but it didn't look good, so I think I'm/he's going to stick with the pissed-off pony.

&lt;li&gt;The only other
thing I want to say about this chapter is you see a little bit more of
how old ET video games just aren't as interesting to other people as
they are to Ariel.

&lt;/ul&gt;

&lt;p&gt;Stay tuned for chapter 8, a chapter I think is one of the best in
the book, the chapter that got me to give up on the first draft and
rewrite the entire book to be more like it. The only chapter in which
Jenny will say, "Wait a minute, are you &lt;i&gt;naked&lt;/i&gt;?"

&lt;p&gt;Image credits: I got the first image from &lt;a href="http://www.flickr.com/photos/63870278@N03/5815466739/"&gt;Flickr user marsmet462&lt;/a&gt;, not sure if they put in enough transformative elbow grease to put their own license on it. Second image comes from &lt;a href="http://www.flickr.com/photos/cv47al/73355633/"&gt;Sven-S. "☃" Porst &lt;/a&gt;.


&lt;p&gt;&lt;a href="http://www.crummy.com/2012/01/03/0"&gt;&amp;lt;- Last week&lt;/a&gt; | &lt;a href="http://www.crummy.com/2012/01/17/0"&gt;Next week -&amp;gt;&lt;/a&gt; </description>
 <pubDate>Tue, 10 Jan 2012 12:43:39 GMT</pubDate>
 <category domain="http://www.crummy.com/nb/nb.cgi/category/nycb/">Constellation%20Games</category>
 <guid isPermaLink="true">http://www.crummy.com/2012/01/10/0</guid>
</item>
 </channel>
</rss>

