<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Jon Smajda</title><link>/</link><description></description><atom:link href="http://jon.smajda.com/rss.xml" rel="self"></atom:link><lastBuildDate>Fri, 19 Apr 2013 14:00:00 -0500</lastBuildDate><item><title>Everybody Loves CSVs</title><link>/2013/04/19/everybody-loves-csvs/</link><description>&lt;p&gt;Clients love &lt;span class="caps"&gt;CSV&lt;/span&gt; files. Well, clients love Excel, and if you give the option of either importing or exporting data in a format Excel can handle, they will take it. So I end up fighting with &lt;span class="caps"&gt;CSV&lt;/span&gt; files quite a bit. On the output side, I &lt;a href="https://github.com/smajda/django-csvview"&gt;put together&lt;/a&gt; a Django package that makes creating &lt;span class="caps"&gt;CSV&lt;/span&gt; views easy. On the input side, I was playing around with importing a bunch of data from &lt;span class="caps"&gt;CSV&lt;/span&gt; files and, inspired by &lt;a href="http://pyvideo.org/video/367"&gt;a couple&lt;/a&gt; &lt;a href="http://pyvideo.org/video/1758"&gt;of talks&lt;/a&gt; I recently watched on &lt;a href="http://pyvideo.org"&gt;pyvideo.org&lt;/a&gt;, I realized I could put together some handy re-usable helper functions for importing csv data. I just included the result in my &lt;a href="https://github.com/smajda/django-djunk-drawer/blob/master/djunk_drawer/csv_utils.py"&gt;django helper collection&lt;/a&gt; because it should be useful in a lot of&amp;nbsp;projects.&lt;/p&gt;
&lt;p&gt;The basic idea is to write a generator that looks at a &lt;span class="caps"&gt;CSV&lt;/span&gt;, figures out what the headers are from the first row, and creates a &lt;code&gt;Row&lt;/code&gt; named tuple with appropriately named keys. It then simply yields a new &lt;code&gt;Row&lt;/code&gt; instance for each row in the csv. The cool thing about this is that you can then access items in your row by name instead of by index, which makes life much less&amp;nbsp;confusing.&lt;/p&gt;
&lt;p&gt;I broke it up into two functions: one that handles the list of row data&amp;nbsp;itself:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;generate_rows&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;spaces&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;compile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;r&amp;#39;\s&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;tuple&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;spaces&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;next&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;tuple&lt;/span&gt;&lt;span class="p"&gt;()))&lt;/span&gt;
    &lt;span class="n"&gt;Row&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;namedtuple&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;Row&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;yield&lt;/span&gt; &lt;span class="n"&gt;Row&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;And then a wrapper around that to take care of csv file opening&amp;nbsp;stuff:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;generate_csv_rows&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;csv_path&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;csv_path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;rU&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;reader&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;csv&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;reader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;generate_rows&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;reader&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="k"&gt;yield&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;So say you have a file, &lt;code&gt;data.csv&lt;/code&gt; that looks something like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;last&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;first&lt;/span&gt;
&lt;span class="n"&gt;Smajda&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;Jon&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;You can use &lt;code&gt;generate_csv_rows&lt;/code&gt; like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;generate_csv_rows&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;data.csv&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Hello {first} {last}!&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_asdict&lt;/span&gt;&lt;span class="p"&gt;()))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Fri, 19 Apr 2013 14:00:00 -0500</pubDate><guid>tag:,2013-04-19:2013/04/19/everybody-loves-csvs/</guid></item><item><title>Loog Guitar Review</title><link>/2013/01/05/loog-guitar-review/</link><description>&lt;p&gt;My 6 year old daughter&amp;#8217;s big Christmas gift this year was a &lt;a href="http://www.loogguitars.com/"&gt;Loog guitar&lt;/a&gt;. Before ordering it, I had considered whether or not to buy one for months. For one thing, I had a hard time finding actual guitarists reviewing the Loog &lt;em&gt;as a guitar&lt;/em&gt;. All the reviews were positive, but lacked depth. After a week with the Loog, I figure I may be able to help others in similar situations. In short, I have some complaints and cautionary notes, but in general I love this little guitar. My daughter&amp;#8217;s having a blast with it so far, and so am&amp;nbsp;I.&lt;/p&gt;
&lt;p&gt;My daughter already had a toy guitar, and it was terrible. It was an acoustic  with six steel strings a mile off the fretboard that were impossible to tune. It was exactly like all the toy guitars you&amp;#8217;ll see in the toy aisle, and these exist solely so that little kids can strum out-of-tune open chords, pretending to be rock stars while annoying everyone within earshot. This is no way to introduce anyone to actual guitar&amp;nbsp;playing.&lt;/p&gt;
&lt;p&gt;The promise of the Loog is that it was designed to be a real guitar that kids can actually make music with. Not a &amp;#8220;toy guitar&amp;#8221;, but a &amp;#8220;guitar for kids&amp;#8221;. It has only three strings on a short, thin neck perfect for small hands. It uses classical guitar strings, which is a great choice: classical strings require a lighter touch to play and are easier on callus-free fingers. Additionally, once you stretch them out&amp;#8212;and you do really have to stretch them out&amp;#8212;they stay in tune really well. It takes more turns of the tuning peg to change the pitch, which means it&amp;#8217;s much harder to knock them out of tune on&amp;nbsp;accident.&lt;/p&gt;
&lt;p&gt;There are three choices of body styles. We picked the &lt;a href="http://www.loogguitars.com/guitars/loog-ii"&gt;&lt;span class="caps"&gt;II&lt;/span&gt;&lt;/a&gt;, a funky shape that reminds me of a mini acoustic version of a &lt;a href="http://www.carvinworld.com/catalog/guitars/v220"&gt;Carvin V220&lt;/a&gt; or an &lt;a href="http://www.music-man.com/instruments/guitars/albert-lee.html"&gt;Ernie Ball Albert Lee model&lt;/a&gt;. It&amp;#8217;s the perfect size for a kid. Here&amp;#8217;s my daughter trying it on for the first time here after opening it on Christmas morning (hence the&amp;nbsp;PJs):&lt;/p&gt;
&lt;p&gt;&lt;img src="https://s3.amazonaws.com/jon.smajda.com/files/loog-first-photo.jpg" width="600" height="653" /&gt;&lt;/p&gt;
&lt;p&gt;The Loog comes unassembled. The company recommends that you and your kid assemble the guitar together as a fun learning and bonding experience. I opted not to take this heart-warming advice, however, and I&amp;#8217;m glad I didn&amp;#8217;t. Our Loog actually required quite a bit of work to get into good playing&amp;nbsp;shape.&lt;/p&gt;
&lt;p&gt;My first impression was very positive: the guitar comes in a cool little cardboard box that can serve as a simple case for the assembled guitar. The wood and the hardware are solid. The assembly itself is not hard and the instructions are clear. However, upon stringing up the guitar, I was not pleased with the action (the height of the strings off the fretboard). You can see here that the neck angle is&amp;nbsp;off:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://s3.amazonaws.com/jon.smajda.com/files/loog-pre-shim.jpg" width="600" height="450" /&gt;&lt;/p&gt;
&lt;p&gt;I actually emailed the company and asked for advice. The response was fast and polite. Fortunately, because the Loog is a bolt-on neck guitar, a simple neck shim can do wonders. The person at Loog recommended a washer, but even the thinnest of washers I found were too extreme. Instead, I cut up a few pieces of card-stock paper (in my case, old D&amp;#8217;Addario string wrappers) and placed them in the neck&amp;nbsp;pocket:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://s3.amazonaws.com/jon.smajda.com/files/loog-shim.jpg" width="600" height="450" /&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve played bolt-on neck guitars my entire life but had never had to do this before. I was a little disappointed about it — it was a brand new guitar after all — but the truth is that this worked perfectly. The neck still fits tightly in the pocket and the action is much&amp;nbsp;improved:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://s3.amazonaws.com/jon.smajda.com/files/loog-post-shim.jpg" width="600" height="450" /&gt;&lt;/p&gt;
&lt;p&gt;In addition to the shim, I filed down the nut quite a bit and also filed some grooves into the bridge to further lower the action and stabilize the strings. The nut in particular helped a lot. I bought a set of nut files years ago and they&amp;#8217;ve proven to be very useful. Off the shelf, guitars almost always have their nuts cut too high. The string only needs to come out of the nut high enough to pass over the frets — look at what happens when you play a note on one of the frets! — and having the nut cut properly makes a huge difference in how easy it is to press down on the&amp;nbsp;strings. &lt;/p&gt;
&lt;p&gt;So it didn&amp;#8217;t surprise me filing the nut was worth doing on the Loog, but obviously most people are not going to do this. And most people are probably not going to shim the neck either. They&amp;#8217;ll just put together their Loog following the simple instructions in the box and then tolerate whatever level of playability they end up with. The guy at Loog who responded to my email about the action made it sound like the high action was only a problem on some guitars. The sticker inside our Loog says &amp;#8220;Batch #1&amp;#8221; so hopefully there is just more variation in these early batches that they&amp;#8217;ll take care of in the&amp;nbsp;future.&lt;/p&gt;
&lt;p&gt;The good news, however, is that the Loog plays pretty great now. I just think they over-sell the ease of building it yourself. The Loog is $150, and like I said, they use quality parts. It&amp;#8217;s worth it. But it&amp;#8217;s probably also worth it to take it to a local guitar tech and have them adjust the neck, and the nut and bridge saddles for you if you&amp;#8217;re not comfortable doing these things yourself. And hopefully Loog will improve the out-of-the-box experience by improving the angle of the neck joint and filing the nut lower from the&amp;nbsp;start.&lt;/p&gt;
&lt;p&gt;I do have a few other nits to pick: intonation, for example. We have ours tuned to Open A tuning (A-E-A), which is what they recommend. Getting the two A strings to stay in tune with each other all the way up and down the neck is not possible (i.e. tune them at the 3rd fret and they&amp;#8217;re slightly out of tune at the 9th). This isn&amp;#8217;t a huge deal: it certainly won&amp;#8217;t bother my daughter at this point, but as I said, I wanted to review the Loog as a real guitar. It&amp;#8217;s the first string that has the problem, so maybe a slanted bridge would&amp;nbsp;help?&lt;/p&gt;
&lt;p&gt;Ok, that concludes the negative portion of this review. Now I get to&amp;nbsp;gush:&lt;/p&gt;
&lt;p&gt;Open A tuning is perfect for this guitar. Basically it means you can play an A &amp;#8220;power chord&amp;#8221; by just strumming all three open strings. To play a C? Just press down all 3 strings on the 3rd fret. Basically I told my daughter to start by playing around with the frets that have the dots and, sure enough, things always sound in tune that&amp;nbsp;way.&lt;/p&gt;
&lt;p&gt;And that&amp;#8217;s the best part about this guitar: she can just play around with it and actually make music. We&amp;#8217;re working on really simple stuff at this point, obviously, but with the old toy guitar we never made any progress at all. The Loog is solid, stays in tune, and is easy enough to play that my 6-year-old can just pick it up and play actual chords. Here&amp;#8217;s her first song with the Loog, a tribute to one of her other Christmas&amp;nbsp;presents:&lt;/p&gt;
&lt;iframe src="http://player.vimeo.com/video/56810319?title=0&amp;amp;byline=0&amp;amp;portrait=0" width="600" height="337" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen&gt;&lt;/iframe&gt;

&lt;p&gt;I&amp;#8217;ve played the guitar my entire life, and obviously I would love it if my daughter falls in love with the instrument like I did. This may or may not happen and I don&amp;#8217;t want to be one of &lt;em&gt;those parents&lt;/em&gt; that pressures her either way. However, at least with the Loog I feel that if she likes playing the Loog, she&amp;#8217;ll like playing the guitar. This simply isn&amp;#8217;t true of the other kid&amp;#8217;s guitars I&amp;#8217;ve seen that really don&amp;#8217;t give a kid-friendly version of the guitar playing experience. This thing&amp;nbsp;does.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Sat, 05 Jan 2013 08:27:00 -0600</pubDate><guid>tag:,2013-01-05:2013/01/05/loog-guitar-review/</guid></item><item><title>Tidier Model Methods</title><link>/2012/12/28/tidier-model-methods/</link><description>&lt;p&gt;A common problem with Django models is that your Model&amp;#8217;s methods become unwieldy. Dozens of methods tacked on to your Model are handy and all,&amp;nbsp;but:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Your &lt;code&gt;models.py&lt;/code&gt; file becomes a big&amp;nbsp;mess.&lt;/li&gt;
&lt;li&gt;Your Model&amp;#8217;s namespace gets cluttered and it&amp;#8217;s hard to tell what&amp;#8217;s&amp;nbsp;what.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;One technique I&amp;#8217;ve become fond of for keeping these organized is to organize these methods into separate classes and then use composition to attach these classes to either an instance or a&amp;nbsp;class.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s a simple example that should give you the idea: let&amp;#8217;s say you&amp;#8217;ve got a &lt;code&gt;Person&lt;/code&gt; model and you have a bunch of methods that apply different formatting to information about this person. You can take all of those formatting-related methods, put them in a class, and then attach them to each &lt;code&gt;Person&lt;/code&gt; instance at &lt;code&gt;self.formatters&lt;/code&gt; using &lt;a href="http://eflorenzano.com/blog/2008/05/04/inheritance-vs-composition/"&gt;object composition&lt;/a&gt; on the&amp;nbsp;instance:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Model&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;TextField&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;TextField&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;address&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ForeignKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Address&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="c"&gt;# etc.&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="nb"&gt;super&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;formatters&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;PersonFormatters&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;PersonFormatters&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;object&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;person&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;person&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;greeting&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;Dear {0} {1}&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;person&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;person&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;address_label&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;{0}&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;{1}&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;greeting&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;insult&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;You idiot, {0}!&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;person&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;upper&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Then you can access all of these methods like &lt;code&gt;person.formatters.greeting()&lt;/code&gt;. I get lost whenever I&amp;#8217;m inside classes that span hundreds or thousands of lines, so I think this is a pretty nice approach. You could probably go overboard with this and just cause yourself confusion, but in specific cases it can lead to more organized code. There are probably some situations where you could think up certain &amp;#8220;Model Helper&amp;#8221; classes like this that could be reused across a bunch of different Models as&amp;nbsp;well.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Fri, 28 Dec 2012 16:37:00 -0600</pubDate><guid>tag:,2012-12-28:2012/12/28/tidier-model-methods/</guid></item><item><title>Sets</title><link>/2012/12/27/sets/</link><description>&lt;p&gt;One of my absolute favorite things about Python is the rich collection of data containers you have at your disposal: lists, dictionaries, and tuples, of course, but also the collections module (OrderedDicts, namedtuples, Counters) and the topic of this post:&amp;nbsp;sets.&lt;/p&gt;
&lt;p&gt;You see, if you&amp;#8217;re coming from &lt;span class="caps"&gt;PHP&lt;/span&gt;, there are arrays. And then there are arrays within arrays. You can have any data structure you like, so long as it starts with &lt;code&gt;array(&lt;/code&gt;.  You know, &lt;code&gt;array(array(array(array(...&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;So, coming from the impoverished data structures of &lt;span class="caps"&gt;PHP&lt;/span&gt;, Python&amp;#8217;s seem both luxurious and overwhelming. Sets, for instance, didn&amp;#8217;t make much sense to me at first. Sets are like lists, only they&amp;#8217;re unordered and can&amp;#8217;t contain duplicates. Those sound like handy features to have &amp;#8212; I think I&amp;#8217;ll just use&amp;nbsp;lists!&lt;/p&gt;
&lt;p&gt;And when lists are needed, use lists. But there are actually many common situations where people often just use lists when sets can solve a lot of&amp;nbsp;problems.&lt;/p&gt;
&lt;h3&gt;Set&amp;nbsp;Operations&lt;/h3&gt;
&lt;p&gt;Let&amp;#8217;s say you&amp;#8217;re validating a &lt;span class="caps"&gt;CSV&lt;/span&gt; file. You want to make sure that it contains some required headers. Here they are as a&amp;nbsp;set:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;required&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;id&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;name&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;address&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;title&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;(The brace notation for sets isn&amp;#8217;t available in Python 2.6 and below: you have to use &lt;code&gt;set([...])&lt;/code&gt;.)&lt;/p&gt;
&lt;p&gt;Ok, now let&amp;#8217;s get our headers from our&amp;nbsp;csv:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;with&lt;/span&gt; &lt;span class="n"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;myfile.csv&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;rU&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;as&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;reader&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;csv&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;reader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;delimiter&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;,&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;reader&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;next&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Rather than doing something silly like looping through &lt;code&gt;required&lt;/code&gt; and testing for membership in &lt;code&gt;headers&lt;/code&gt;, we can take advantage of the fact that sets are designed for super fast membership lookups like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;required&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;issubset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;)):&lt;/span&gt;
    &lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;Good!&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;&lt;code&gt;issubset&lt;/code&gt; is just one of the handy set operations available to you: &lt;code&gt;union&lt;/code&gt;, &lt;code&gt;difference&lt;/code&gt;, etc. Do &lt;code&gt;dir(set())&lt;/code&gt; for a list. These kinds of operations make up for a fairly large amount of the things you often do with lists, and once you&amp;#8217;re aware of sets, you&amp;#8217;ll keep finding reasons to use&amp;nbsp;them.&lt;/p&gt;
&lt;h3&gt;Speed&lt;/h3&gt;
&lt;p&gt;This makes for clean code, but it&amp;#8217;s also faster. For instance, lets make up a test case here. Create two sets consisting of 200 random integers between 1 and&amp;nbsp;1000:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;one&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;1&lt;span class="p"&gt;,&lt;/span&gt; 1000&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;0&lt;span class="p"&gt;,&lt;/span&gt; 200&lt;span class="p"&gt;)}&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;two&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;1&lt;span class="p"&gt;,&lt;/span&gt; 1000&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;0&lt;span class="p"&gt;,&lt;/span&gt; 200&lt;span class="p"&gt;)}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Let&amp;#8217;s say we want to find what item&amp;#8217;s they have in common. In one corner, we will take advantage of set&amp;#8217;s &lt;code&gt;intersection&lt;/code&gt; method:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;  &lt;span class="n"&gt;one&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;intersection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;two&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;In the other corner, we will loop over one set and pull out the items in both sets, shown here with a list&amp;nbsp;comprehension:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;one&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;two&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Which is faster? Let&amp;#8217;s use &lt;code&gt;timeit&lt;/code&gt;:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;timeit&lt;/span&gt; &lt;span class="n"&gt;import&lt;/span&gt; &lt;span class="n"&gt;timeit&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;setup&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;from __main__ import one, two&amp;#39;&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;timeit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;one.intersection(two)&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
39&lt;span class="p"&gt;.&lt;/span&gt;309852838516235
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;timeit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;[i for i in one if i in two]&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
120&lt;span class="p"&gt;.&lt;/span&gt;47418093681335
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;A few&amp;nbsp;notes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;timeit&lt;/code&gt; is pretty unfriendly to use isn&amp;#8217;t it?  If you haven&amp;#8217;t used it before, The first argument is a statement that is executed one million times, and the second argument is a setup for the first argument: here, importing &lt;code&gt;one&lt;/code&gt; and &lt;code&gt;two&lt;/code&gt; from my current&amp;nbsp;module.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;set.intersection&lt;/code&gt; is 3 times&amp;nbsp;faster!&lt;/li&gt;
&lt;li&gt;I actually did this in Pythonista on my iPad, so these times are likely very&amp;nbsp;slow!&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Why are sets faster? The implementation of lists basically mirrors the way lists work: items gets added to a list, at a particular position, and the list doesn&amp;#8217;t care whether it has 1 or 100 copies of what you&amp;#8217;re adding. So if you ask whether a particular item is in a list, Python pretty much has to do exactly what we would have to do: loop through each item in the list and ask, &amp;#8220;Is this what you&amp;#8217;re looking&amp;nbsp;for?&amp;#8221;&lt;/p&gt;
&lt;p&gt;Sets, however, are not stored like this. When you add a value to a set, Python hashes the value and stores it at a specific point in the hash based on that hash value. This means that looking up an item means hashing the value you&amp;#8217;re asking for and then trying to retrieve that value from the set&amp;#8217;s hash&amp;nbsp;table. &lt;/p&gt;
&lt;p&gt;This is why sets require unique items (duplicate items have the same hash value), and also why sets are unordered (because sets return their values in their hashed&amp;nbsp;order). &lt;/p&gt;
&lt;p&gt;For a more thorough explanation, check out Brandon Rhodes talk, &lt;a href="http://pyvideo.org/video/276/the-mighty-dictionary-55"&gt;The Mighty Dictionary&lt;/a&gt;. Dictionaries? Sets are basically dictionaries with only&amp;nbsp;keys.&lt;/p&gt;
&lt;p&gt;You can see the effect of this when you compare the result of asking for membership in a list versus a set. Here we&amp;#8217;ll take a random value from our &lt;code&gt;one&lt;/code&gt; set (which we&amp;#8217;ll convert to a list first: &lt;code&gt;random.choice&lt;/code&gt; wants a list) and then ask whether or not it&amp;#8217;s in our &lt;code&gt;two&lt;/code&gt; set. Then we&amp;#8217;ll convert &lt;code&gt;two&lt;/code&gt; to a list and try the same&amp;nbsp;thing:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;one&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;one&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;setup&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;from __main__ import one, two; import random&amp;#39;&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;timeit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;random.choice(one) in two&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
8&lt;span class="p"&gt;.&lt;/span&gt;184441089630127
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;two&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;two&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;timeit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;random.choice(one) in two&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
28&lt;span class="p"&gt;.&lt;/span&gt;87601089477539
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Again, about 3.5 times as fast to test for membership in a set vs a list&amp;#8230;but this isn&amp;#8217;t a very big list. Let&amp;#8217;s make them bigger. Let&amp;#8217;s create two lists/sets with 1,000 random integers between 1 and 10,000. Again, &lt;code&gt;one&lt;/code&gt; is a  list, and &lt;code&gt;two&lt;/code&gt; is first a set, then a&amp;nbsp;list:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;one&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;1&lt;span class="p"&gt;,&lt;/span&gt; 10000&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;0&lt;span class="p"&gt;,&lt;/span&gt; 1000&lt;span class="p"&gt;)]&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;two&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;1&lt;span class="p"&gt;,&lt;/span&gt; 10000&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;0&lt;span class="p"&gt;,&lt;/span&gt; 1000&lt;span class="p"&gt;)}&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;timeit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;random.choice(one) in two&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
8&lt;span class="p"&gt;.&lt;/span&gt;436138153076172
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;two&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;two&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;timeit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;random.choice(one) in two&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
138&lt;span class="p"&gt;.&lt;/span&gt;07221007347107
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Game over. It&amp;#8217;s basically just as fast to do the lookup on a 1,000 item set as before, but 5 times slower for the 1,000 list than the 200 item&amp;nbsp;list.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Thu, 27 Dec 2012 16:53:00 -0600</pubDate><guid>tag:,2012-12-27:2012/12/27/sets/</guid></item><item><title>Reboot</title><link>/2012/12/27/reboot/</link><description>&lt;p&gt;In one form or another, this blog has existed since 2003. On the eve of 2013, however, I find I&amp;#8217;ve not really been using much for a few years now. Much of the reason for my recent silence is pretty simple: I&amp;#8217;ve been really busy, and my life has been in flux the last few&amp;nbsp;years.&lt;/p&gt;
&lt;p&gt;A few years ago, I was a graduate student in sociology with hopes of an academic career. Now I&amp;#8217;ve got a PhD in sociology but I&amp;#8217;m knee deep in a young career not as an academic, but as a web developer. I&amp;#8217;m quite happy with how this has turned out actually, but it&amp;#8217;s also meant a hectic few years of playing catch up. I&amp;#8217;ve always used this blog as a knowledge dump for whatever I&amp;#8217;ve been learning, but I&amp;#8217;ve done virtually none of this in recent years. I&amp;#8217;m going to try to change&amp;nbsp;this.&lt;/p&gt;
&lt;p&gt;These days I&amp;#8217;m writing a lot of Python and building websites and web apps with the Django web framework. I&amp;#8217;ve been lucky enough to work at small companies where I&amp;#8217;ve gotten a chance to work at pretty much every level of the development stack, from setting up servers to writing both back- and front-end code. And I&amp;#8217;m a compulsive note taker, so I&amp;#8217;ve actually been writing a lot of stuff down to help me learn throughout this&amp;nbsp;process.&lt;/p&gt;
&lt;p&gt;Why haven&amp;#8217;t I been sharing it? Aside from just being busy, I&amp;#8217;ve hesitated writing too many programming-related things in recent years for a number of other reasons. First, these posts get dated fast. A lot of my posts on this blog from a couple years ago were about how to do certain things with WordPress. Well, options and best practices change. I think if you want to be involved in things at the tutorial level, it&amp;#8217;s probably more productive to help write documentation for an open source project or to participate in &lt;span class="caps"&gt;IRC&lt;/span&gt; or in local user&amp;#8217;s groups. Then there&amp;#8217;s a fact immediately apparent from reading any of the comments on Hacker News: programmers are not often the nicest critics, and it just takes a certain level of energy to throw yourself out there as a target to that&amp;nbsp;crowd.&lt;/p&gt;
&lt;p&gt;Nonetheless, I&amp;#8217;ve been feeling the itch to start writing stuff here again. It&amp;#8217;s been bugging me that my website doesn&amp;#8217;t reflect what I do much anymore. Plus I&amp;#8217;ve got a nice list of Python-related posts that I&amp;#8217;d like to get around to writing somewhere. Might as well be&amp;nbsp;here.&lt;/p&gt;
&lt;p&gt;This blog is now running on &lt;a href="http://docs.getpelican.com/"&gt;Pelican&lt;/a&gt;, which is technically the fifth blogging platform it&amp;#8217;s lived on: &lt;a href="http://www.lifli.com/iBlog/index.html"&gt;iBlog&lt;/a&gt; (!), Blogger, WordPress, Jekyll, now Pelican.  (Jekyll and Pelican are practically identical, but I wanted a Python-based static site generator instead of Jekyll&amp;#8217;s Ruby and switching was&amp;nbsp;easy.)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Thu, 27 Dec 2012 15:40:00 -0600</pubDate><guid>tag:,2012-12-27:2012/12/27/reboot/</guid></item><item><title>Updates</title><link>/2012/05/13/updates/</link><description>&lt;p&gt;I&amp;#8217;ve had dry spells in the past on this blog, but this has been the longest. A lot has&amp;nbsp;happened.&lt;/p&gt;
&lt;p&gt;In December, I completed, and successfully defended, my PhD in sociology! Finally! It&amp;#8217;s been a huge relief to be done and have that part of my life behind me. While I applied for some academic jobs this past Fall, nothing has panned out and I&amp;#8217;m mostly out of the academic world these days. Not entirely though: I&amp;#8217;m still working with &lt;a href="http://thesocietypages.org"&gt;The Society Pages&lt;/a&gt; and &lt;a href="http://contexts.org"&gt;Contexts&lt;/a&gt;, keeping the servers running in the engine room for both sites and doing some podcasting and editorial work for&amp;nbsp;&lt;span class="caps"&gt;TSP&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;As a grad student I got interested in studying the culture of open source software, and I&amp;#8217;ve now officially gone native: working as a web developer full-time. Most of my time there is now spent working with Python and Django, which I greatly enjoy: both are elegant, powerful, and fun. We&amp;#8217;ve been working on a particularly large Django project for the past year now that has been a great learning experience. If I ever get around to posting here again, there&amp;#8217;ll likely be some Python and Django-related posts sharing what I&amp;#8217;ve&amp;nbsp;learned. &lt;/p&gt;
&lt;p&gt;After spending nearly a decade pursuing a PhD in sociology, it&amp;#8217;s been a bit of a mental adjustment to get used to the idea that this is now my career, not sociology. On most days, however, I&amp;#8217;m happy with how this has turned out. There&amp;#8217;s an ideal vision of what life in academia is like that I know I would love, but the reality is often pretty far off from that. Plus, I&amp;#8217;m pretty pessimistic about the direction higher education is heading in this&amp;nbsp;country.&lt;/p&gt;
&lt;p&gt;More concretely though, I think there are several aspects of my personality that are just better suited to what I&amp;#8217;m doing these days. For instance: I don&amp;#8217;t have the right kind of &lt;em&gt;long-term patience&lt;/em&gt; for academia. For example, my advisor and I have &lt;a href="http://files.smajda.com/jon/papers/northend.pdf"&gt;an article&lt;/a&gt; scheduled to be published this Fall. It was accepted by the journal last Fall. We finished writing the article last Spring. It&amp;#8217;s based on research I did in 2004. So in academia, in other words, you&amp;#8217;ve got to be in it for the long haul. Compare this to what I just said about about web development: in the time it&amp;#8217;s taken this paper to go just from acceptance to publication&amp;#8212;nevermind the actual time spent doing the research and writing!&amp;#8212;I&amp;#8217;ve learned an entire new programming language and web development framework. And I&amp;#8217;m sure there will be others in the next few years. Software development is a fast-moving field. Sociology is&amp;nbsp;not.&lt;/p&gt;
&lt;p&gt;Let&amp;#8217;s see&amp;#8230;what else is&amp;nbsp;new?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Last year, while I was scrambling to finish my dissertation and also get a new career started, I re-discovered running as the ultimate stress-reliever. A few months back, I started tracking &lt;a href="http://runkeeper.com/user/jonsmajda/"&gt;my runs on Runkeeper&lt;/a&gt;. I keep going back and forth on whether I actually want to start entering races. The competitor in me thinks I should, but a big part of the appeal of running for me is &lt;em&gt;getting away&lt;/em&gt; from other stressors in my life so I&amp;#8217;m hesitant to introduce any extra stress into running. For now, it&amp;#8217;s just for&amp;nbsp;fun.&lt;/li&gt;
&lt;li&gt;Chloe is now five years old. She starts Kindergarten in the Fall. She&amp;#8217;s&amp;nbsp;amazing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That&amp;#8217;s about it for now. Hopefully it won&amp;#8217;t be another 10 months before I post&amp;nbsp;again!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Sun, 13 May 2012 13:15:23 -0500</pubDate><guid>tag:,2012-05-13:2012/05/13/updates/</guid></item><item><title>WordPress and Git</title><link>/2011/07/17/wordpress-and-git/</link><description>&lt;p&gt;&lt;em&gt;A few years back, I wrote a post on &lt;a href="http://jon.smajda.com/2008/05/06/managing-wordpress/"&gt;managing WordPress&lt;/a&gt;. For the most part, it&amp;#8217;s still valid but I&amp;#8217;ve been using git to manage code for quite awhile now, so I thought I&amp;#8217;d give a little&amp;nbsp;update.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a href="http://markjaquith.com/"&gt;Mark Jaquith&lt;/a&gt;, there&amp;#8217;s now a reliable, complete &lt;a href="https://github.com/WordPress/WordPress"&gt;git mirror of WordPress&lt;/a&gt;. I&amp;#8217;ve been using git to manage my WordPress sites for awhile now, but the actual updating of WordPress has always been weird to force into the git loop. My practice has been to keep a stock WordPress git repository that is also a subversion repository (just add &lt;code&gt;*.svn&lt;/code&gt; to your &lt;code&gt;.gitignore&lt;/code&gt;). I &lt;code&gt;svn switch&lt;/code&gt; to a new tagged release, commit the result in git, and then this repository is set up as a remote on all my active WordPress sites, so I ssh into these sites and merge each with this stock WordPress&amp;nbsp;branch.&lt;/p&gt;
&lt;p&gt;Now that there&amp;#8217;s a good Wordpress mirror on github, the way to take advantage of this may seem obvious: just clone this mirror and then merge from it. However, that has a couple downsides. First, you get messy history: all of the commits you&amp;#8217;ve made locally for your site get drowned in WordPress core commits. Second, unless you&amp;#8217;re actively developing WordPress core, you only care about official releases (and possibly beta releases). In other words, you want to merge with tags only and you don&amp;#8217;t want messy history. So here&amp;#8217;s how to get that: instead of cloning Jaquith&amp;#8217;s mirror, just add it as a remote and squash the&amp;nbsp;commits. &lt;/p&gt;
&lt;h3&gt;Step-by-step:&lt;/h3&gt;
&lt;p&gt;If you&amp;#8217;re starting from scratch, create an empty git repo with &lt;code&gt;git init&lt;/code&gt; and create an initial commit with something &amp;#8212; maybe a local-readme.txt file explaining what you&amp;#8217;re doing. (&amp;#8220;Squash commit into empty head not supported yet&amp;#8221;.) Anway, add the&amp;nbsp;remote:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;git&lt;/span&gt; &lt;span class="n"&gt;remote&lt;/span&gt; &lt;span class="n"&gt;add&lt;/span&gt; &lt;span class="n"&gt;wp&lt;/span&gt; &lt;span class="n"&gt;git&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;github&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;WordPress&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;WordPress&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;git&lt;/span&gt;
&lt;span class="n"&gt;git&lt;/span&gt; &lt;span class="n"&gt;fetch&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="n"&gt;wp&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;The first adds the github mirror as a remote named &amp;#8220;wp&amp;#8221;. The &lt;code&gt;fetch -t&lt;/code&gt; will make sure you get all the tags. (Run &lt;code&gt;git tags&lt;/code&gt; afterwards to see the list of available&amp;nbsp;tags.)&lt;/p&gt;
&lt;p&gt;Next, merge with the latest tag (here,&amp;nbsp;3.2.1):&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;git&lt;/span&gt; &lt;span class="n"&gt;merge&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;squash&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;no&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;commit&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="n"&gt;recursive&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;X&lt;/span&gt; &lt;span class="n"&gt;theirs&lt;/span&gt; &lt;span class="n"&gt;tags&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;3&lt;span class="p"&gt;.&lt;/span&gt;2&lt;span class="p"&gt;.&lt;/span&gt;1
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;The &lt;code&gt;--squash&lt;/code&gt; means it takes the hundreds (thousands?) of ancestor commits for that tag and compresses it into a single commit. The &lt;code&gt;-s recursive -X theirs&lt;/code&gt; tells git that if there are conflicts, use the new version. (Remember, all you&amp;#8217;re doing here is creating a simple local WordPress mirror to merge your actual WordPress sites&amp;nbsp;with.)&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;--no-commit&lt;/code&gt; tells git to merge but stop just short of actually making the commit. So make sure everything looks good. For example, you can&amp;#8217;t squash binary files so you may get conflicts about that. If this happens, just &lt;code&gt;git checkout&lt;/code&gt; the latest version explicitly. For example, going from 3.2 to 3.2.1 I had to do the following: &lt;code&gt;git checkout tags/3.2.1 -- wp-admin/images/wp-logo.png&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Finally, &lt;code&gt;git commit -m "3.2.1"&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now, as I said above, what I like to do is this: do &lt;em&gt;not&lt;/em&gt; use this as your starting point for an actual WordPress instance. Instead you add &lt;em&gt;this&lt;/em&gt; repo as a remote (just like we did above) to your site and then you can just do a &lt;code&gt;git pull wp&lt;/code&gt; (or whatever you call it) there. That way you only have to do the little dance above once for each release if you&amp;#8217;re responsible for multiple WordPress&amp;nbsp;instances.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Quick aside:&lt;/em&gt; Why don&amp;#8217;t I just put &lt;em&gt;mine&lt;/em&gt; on github? I could. Here&amp;#8217;s why &lt;del&gt;Jaquith&amp;#8217;s mirror&lt;/del&gt; an official WordPress mirror is a big deal. Others have done this, but they&amp;#8217;ve all had shortcomings: the ones I knew about didn&amp;#8217;t include tags, or they were really slow to update, or they simply got abandoned. &lt;em&gt;I&amp;#8217;m not blaming any of them.&lt;/em&gt; Sure, I could put a &amp;#8220;simplified WordPress repo&amp;#8221; on github, but I don&amp;#8217;t want to commit to updating it instantly every WordPress update forever. And what works for me may not work for you. The process I described above is not difficult and shows how you can take the comprehensive mirror and merge with it to make your life easier in your own way that suites your&amp;nbsp;needs.&lt;/p&gt;
&lt;h3&gt;Plugins&lt;/h3&gt;
&lt;p&gt;What about plugins? There&amp;#8217;s no git mirror of the WordPress Plugins Directory that I know of, so I usually revert to my subversion hack described above: &lt;code&gt;svn co http://svn.wp-plugins.org/plugin-name/trunk/ .&lt;/code&gt; into a directory for the plugin and then commit the results into git. Alternatively, you can use WordPress&amp;#8217; backend plugin updater, which can work just fine, but I inevitably end up having to modify certain plugins and that process simply overwrites the files and you lose your modifications, whereas at least &lt;code&gt;svn up&lt;/code&gt; will alert you to conflicts and let you merge your changes into the new version. (Makes me wonder how many out-of-date plugins would be updated if the WordPress Plugin Directory worked more like github &amp;#8212; where anyone could fork your plugin and fix it if you&amp;nbsp;won&amp;#8217;t&amp;#8230;)&lt;/p&gt;
&lt;h3&gt;Beta&amp;nbsp;Testing&lt;/h3&gt;
&lt;p&gt;If you want to test beta releases locally before installing them, you can just create a &amp;#8220;testing&amp;#8221; branch of your WordPress repository (&lt;code&gt;git checkout -b testing&lt;/code&gt;) and then instead of merging with a release tag, just merge with whatever branch the development for the next version is happening on. Make sure if you&amp;#8217;re going to switch back and forth to backup your database&amp;nbsp;though!&lt;/p&gt;
&lt;h3&gt;Merging into an existing&amp;nbsp;site&lt;/h3&gt;
&lt;p&gt;This may sound great for setting up new sites, but what about merging into an existing wordpress site? You&amp;#8217;ll get conflicts because git won&amp;#8217;t have a common ancestor commit to merge from. So fake one: create &lt;a href="http://stackoverflow.com/questions/1488753/how-to-merge-two-branches-without-a-common-ancestor/1491057#1491057"&gt;a graft file&lt;/a&gt; file linking your most recent commit where you updated WordPress (if you&amp;#8217;re using git for the first time, just use your first commit) and the &lt;span class="caps"&gt;SHA1&lt;/span&gt; of the commit for the version you&amp;#8217;re currently running in your base WordPress repo. After creating this file, you should see both branches reflected in your &lt;code&gt;git log&lt;/code&gt; and when you try to merge to the current commit in your remote branch, it should merge cleanly, as if you&amp;#8217;d been merging with it all&amp;nbsp;along.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Sun, 17 Jul 2011 15:35:54 -0500</pubDate><guid>tag:,2011-07-17:2011/07/17/wordpress-and-git/</guid></item><item><title>Parenting and Happiness</title><link>/2011/05/18/parenting-and-happiness/</link><description>&lt;p&gt;Laura Norén has a &lt;a href="http://thesocietypages.org/graphicsociology/2011/05/17/are-people-who-have-kids-happier-not-really/"&gt;good post&lt;/a&gt; (and graphic) on a recent study that argues that people who have kids may be less happy while raising those children, but more happy later in&amp;nbsp;life. &lt;/p&gt;
&lt;p&gt;As a parent of a four-year-old, I take some comfort in this. However, I&amp;#8217;ve always felt a little uneasy about happiness studies. Here&amp;#8217;s what they asked&amp;nbsp;people:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Taking all things together, would you say you are very happy, quite happy, somewhat happy, or not at all&amp;nbsp;happy?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Right now, I&amp;#8217;m &amp;#8220;very happy&amp;#8221; because it&amp;#8217;s early in the morning and no one else is awake, I&amp;#8217;m sitting on the couch, drinking coffee, and playing on the internet. Any minute now, the kid will wake up. Today, she happens to be sick, which could make for a particularly difficult morning. This may make me &amp;#8220;not at all happy&amp;#8221;&amp;#8230;or &amp;#8220;very happy&amp;#8221; &amp;#8212; when she&amp;#8217;s not feeling well she can actually be considerably more cuddly and sweet. She can also throw ginormous fits and be totally inconsolable. In short, not much changes when she&amp;#8217;s sick, it just throws an extra layer of concern over the normal&amp;nbsp;craziness.&lt;/p&gt;
&lt;p&gt;But I&amp;#8217;m not sure this craziness really makes me &lt;em&gt;unhappy&lt;/em&gt;. Moment to moment, it absolutely can. But it&amp;#8217;s also my experience &amp;#8212; and I know this may sound hokey &amp;#8212; that anything ambitious or challenging makes us miserable at least part of the time. That&amp;#8217;s certainly the case when I think back on my life, at least. Now, there may be a slippery slope from here to glorifying misery and depression. I definitely don&amp;#8217;t want to do that. I just have no clue how I&amp;#8217;d answer that question if I were asked today. It would probably depend quite a bit on my mood at the moment and not necessarily reflect my overall attitude towards where I&amp;#8217;m at in life right now: a point that is both stressful, but also&amp;nbsp;exciting.&lt;/p&gt;
&lt;p&gt;The kink in my critique here, though, is about the key finding here: older parents are happier. After the kids are gone, what makes parents happier? I kind of suspect there&amp;#8217;s something else going on here. If you control for, say, number of regular personal connections a person has does this go away? Children tend to be a good source of lasting relationships. Does the parental boost in happiness depend on how close the parents are with their children after they&amp;#8217;ve grown up? (#lazyblog warning: I haven&amp;#8217;t read the article. They may address&amp;nbsp;this.)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Wed, 18 May 2011 07:25:39 -0500</pubDate><guid>tag:,2011-05-18:2011/05/18/parenting-and-happiness/</guid></item><item><title>Dvorak Follow-up</title><link>/2011/05/15/dvorak-follow-up/</link><description>&lt;p&gt;About a year-and-a-half ago, I wrote about how I was &lt;a href="http://jon.smajda.com/2009/12/02/learning-dvorak/"&gt;learning Dvorak&lt;/a&gt;. I was still very much in the learning phase at the time and I&amp;#8217;ve been meaning to revisit the post for awhile now. Here&amp;#8217;s a quick&amp;nbsp;update:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I&amp;#8217;m still typing&amp;nbsp;Dvorak.&lt;/li&gt;
&lt;li&gt;My hands rarely hurt anymore. This was the main motivation for trying Dvorak, so I&amp;#8217;d call it a success. The decreased motion required with Dvorak seems to have made a difference. One qualification: I&amp;#8217;ve also learned to be more conscious about how hard I type, so that may be making a difference as&amp;nbsp;well.&lt;/li&gt;
&lt;li&gt;I have no idea if I&amp;#8217;m faster than with &lt;span class="caps"&gt;QWERTY&lt;/span&gt;. This wasn&amp;#8217;t a factor in learning Dvorak for me and I haven&amp;#8217;t done any speed&amp;nbsp;tests.&lt;/li&gt;
&lt;li&gt;I wanted to be able to switch between &lt;span class="caps"&gt;QWERTY&lt;/span&gt; and Dvorak. This has not been so easy. I can type &lt;span class="caps"&gt;QWERTY&lt;/span&gt;, but I&amp;#8217;m slow and have to think extra hard about it and/or look at the keyboard the whole time. This is doubly bad because about the only time I have to type &lt;span class="caps"&gt;QWERTY&lt;/span&gt; is when I&amp;#8217;m at someone else&amp;#8217;s computer, usually with them watching while I&amp;#8217;m trying to talk at the same time. So, already not an ideal environment for good typing. I could probably make the effort to get better at &lt;span class="caps"&gt;QWERTY&lt;/span&gt; and practice switching layouts more often, but it&amp;#8217;s just not been that big of a problem&amp;nbsp;yet.&lt;/li&gt;
&lt;li&gt;If you type a lot of English and your hands hurt, I&amp;#8217;d recommend trying Dvorak. Beyond that specific situation, I&amp;#8217;m not sure how heavily I&amp;#8217;d recommend it if you&amp;#8217;re already a good &lt;span class="caps"&gt;QWERTY&lt;/span&gt;&amp;nbsp;typist.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That last point is worth expanding on. The people who seem interested when I tell them I use Dvorak are programmers. Programming alone, however, is a pretty poor reason to switch. First, you don&amp;#8217;t actually type &lt;em&gt;that&lt;/em&gt; much when you&amp;#8217;re programming. Second, all the special keys (brackets, braces, colon, semicolon, etc.) that you type a lot when you&amp;#8217;re programming have moved, and not necessarily to more ergonomic locations. In fact, they&amp;#8217;ve been moved to less ergonomic locations to make room for regular letters non-programmers use more frequently. You also have to relearn keyboard shortcuts, and keyboard shortcuts often have been chosen for ergonomic convenience. If you&amp;#8217;re a vim user like myself, you have to relearn your vim muscle&amp;nbsp;memory.&lt;/p&gt;
&lt;p&gt;However, Dvorak is more easy to recommend to people who just type a lot of English: writing papers, dissertations, emails, blogging, etc. This group of people, however, tend to just think I&amp;#8217;m crazy when I tell them I use Dvorak. They&amp;#8217;ve often never heard of it and assume it&amp;#8217;s something hard-core programmers might do, when, in fact, it makes more sense for them than the programmers who are intrigued by the idea. Of course, there&amp;#8217;s an overlap between &amp;#8220;people who program&amp;#8221; and &amp;#8220;people who spend a lot of non-programming time typing on a computer&amp;#8221;, but it&amp;#8217;s interesting to me that there&amp;#8217;s a disconnect between those interested in Dvorak and those who could most benefit from&amp;nbsp;it.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Sun, 15 May 2011 11:39:52 -0500</pubDate><guid>tag:,2011-05-15:2011/05/15/dvorak-follow-up/</guid></item><item><title>Amazon Announces Library Lending</title><link>/2011/04/20/amazon-announces-library-lending/</link><description>&lt;blockquote&gt;
&lt;p&gt;Amazon is working with OverDrive, the leading provider of digital content solutions for over 11,000 public and educational libraries in the United States, to bring a seamless library borrowing experience to Kindle&amp;nbsp;customers. &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&amp;#8217;ve had my Kindle about a year-and-a-half now and I get asked more about it now than when I first got it. &amp;#8220;Can I check out ebooks from my library?&amp;#8221; is one of the top questions people have. Our local library has OverDrive ebooks already, but has thus far had no Kindle support. There are a lot of avid readers out there that still go to libraries. This will sell some&amp;nbsp;Kindles.&lt;/p&gt;
&lt;p&gt;To read OverDrive books on my Kindle I break the &lt;span class="caps"&gt;DRM&lt;/span&gt; and convert them to .mobi files. This involves using some python scripts that are easily found online. This is not, however, something I can recommend to, say, my parents or their friends that are frequent library patrons. It&amp;#8217;s also not something I should probably be admitting on this here eponymous blog, as it is&amp;nbsp;illegal.&lt;/p&gt;
&lt;p&gt;Which is the real problem with ebooks. Ebooks today are still where mp3s were a few years ago. Conventional wisdom among people who pontificate about these things on the internet is that eventually publishers will cave just like music labels did. Music labels were so scared of Apple&amp;#8217;s dominance that they decided to allow Amazon to distribute &lt;span class="caps"&gt;DRM&lt;/span&gt;-free mp3s just to create a competitor to the iTunes store. Is Amazon enough of a threat to publishers that they&amp;#8217;ll make the same decision? Or will Amazon have enough of the market at that point that it won&amp;#8217;t matter? Apple sells music in order to sell iPods (and now iPhones and iPads), but Amazon is doing the reverse: selling Kindles in order to sell ebooks. The fact that there&amp;#8217;s a Kindle app on every mobile platform now is evidence of this. Which begs the question: why strike a deal with library lenders like this? Just to get market share, I&amp;nbsp;assume.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Wed, 20 Apr 2011 20:04:42 -0500</pubDate><guid>tag:,2011-04-20:2011/04/20/amazon-announces-library-lending/</guid></item><item><title>Disable Automatic Gain Control in Skype</title><link>/2011/04/19/disable-automatic-gain-control-in-skype/</link><description>&lt;p&gt;Open up &lt;code&gt;~/Library/Application Support/Skype/shared.xml&lt;/code&gt; in a text editor, find the &lt;code&gt;&amp;lt;VoiceEng&amp;gt;&lt;/code&gt; section, and add &lt;code&gt;&amp;lt;AGC&amp;gt;0&amp;lt;/AGC&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;EC&amp;gt;0&amp;lt;/EC&amp;gt;&lt;/code&gt;. Like&amp;nbsp;so:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nt"&gt;&amp;lt;VoiceENG&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;span class="caps"&gt;AGC&lt;/span&gt;&amp;gt;&lt;/span&gt;0&lt;span class="nt"&gt;&amp;lt;/&lt;span class="caps"&gt;AGC&lt;/span&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;span class="caps"&gt;EC&lt;/span&gt;&amp;gt;&lt;/span&gt;0&lt;span class="nt"&gt;&amp;lt;/&lt;span class="caps"&gt;EC&lt;/span&gt;&amp;gt;&lt;/span&gt;
  [One or more &lt;span class="nt"&gt;&amp;lt;MicVolume&amp;gt;&lt;/span&gt;&amp;#39;s. Leave them alone.]
&lt;span class="nt"&gt;&amp;lt;/VoiceEng&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;The thread is from 2007, but it still works in Skype&amp;nbsp;5. &lt;/p&gt;
&lt;p&gt;This feature is single-handedly responsible for the many noisy podcast interviewers you hear. See, when your channel is quiet, Skype yanks up the gain on your mic, meaning that every little sniffle, sip of coffee, or fan running two rooms away gets picked up while your guest is talking. And then, when you re-enter the conversation, your first few words are way too loud and distorted until Skype re-adjusts the&amp;nbsp;gain. &lt;/p&gt;
&lt;p&gt;But not anymore on my&amp;nbsp;podcasts.&lt;/p&gt;
&lt;p&gt;To manually adjust your mic gain, open up the &amp;#8220;Audio &lt;span class="caps"&gt;MIDI&lt;/span&gt; Setup&amp;#8221; application (in &lt;code&gt;/Applications/Utilities&lt;/code&gt;) and select the Input tab for your&amp;nbsp;mic. &lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Tue, 19 Apr 2011 21:35:28 -0500</pubDate><guid>tag:,2011-04-19:2011/04/19/disable-automatic-gain-control-in-skype/</guid></item><item><title>Post-Journal Academic Publishing</title><link>/2010/01/07/post-journal-academic-publishing/</link><description>&lt;p&gt;Everyone knows the publishing industry is made up of dinosaurs, but academic publishing is the Brontosaurus. Academic journals are slow, expensive, inaccessible and non-transparent. And there&amp;#8217;s absolutely no reason they need to exist&amp;nbsp;anymore. &lt;/p&gt;
&lt;h3&gt;Ditching the Dead&amp;nbsp;Trees&lt;/h3&gt;
&lt;p&gt;Most clearly, there&amp;#8217;s no technical reason for &lt;em&gt;printed&lt;/em&gt; academic journals. And while traditional journals are increasingly realizing this and going online, they are still published by traditional academic presses who need to somehow pay for themselves, so they charge exorbitant prices to individuals and libraries, and keep their journals in closed formats such as &lt;span class="caps"&gt;DRM&lt;/span&gt;-protected &lt;span class="caps"&gt;PDF&lt;/span&gt;&amp;nbsp;files.&lt;/p&gt;
&lt;p&gt;This might be justified if publishers were necessary to produce a journal, but they&amp;#8217;re not. Editors of academic journals basically work for free and a journal is lucky if they can afford to hire a part-time managing editor. Neither authors or reviewers are paid either. In other words, the content is produced, reviewed, edited and handed over, at very little cost, to publishers (and often the academic associations who sponsor the journal) who turn around and sell the journals back, at very high prices, to the very people producing the content in the first&amp;nbsp;place.&lt;/p&gt;
&lt;p&gt;So what&amp;#8217;s the alternative? An obvious first step would be to ditch the publishers and go online only. The web is a vastly superior distribution platform for most academic work. You can search a web page, for example. Copy and paste quotations. Easily convert &lt;span class="caps"&gt;HTML&lt;/span&gt; to any other format you prefer for reading&amp;#8212;whether that&amp;#8217;s reading on your Kindle or printing out a hard copy on dead trees. (And while I&amp;#8217;m at it, let&amp;#8217;s ditch the &lt;span class="caps"&gt;PDF&lt;/span&gt; in favor of the much more lightweight and flexible &lt;span class="caps"&gt;HTML&lt;/span&gt;. Online-only journals are often still obsessed with looking like print journals, for some&amp;nbsp;reason.)&lt;/p&gt;
&lt;p&gt;And, of course, by going online you save the cost involved in printing and distributing paper copies. And with that the need for academic&amp;nbsp;publishers.&lt;/p&gt;
&lt;p&gt;There are many journals that are free and online already. This isn&amp;#8217;t a new idea: see &lt;a href="http://en.wikipedia.org/wiki/Open_access_journal"&gt;open access journals&lt;/a&gt;. The problem is that the most prestigious journals are not among them. Association sponsored journals are still in print because the associations need them to be in order to fund themselves. And the really big name journals are actually profitable and pay for most of the other journals, which lose money. As long as the most prestigious journals are print journals, free online journals won&amp;#8217;t truly take&amp;nbsp;off. &lt;/p&gt;
&lt;p&gt;But it&amp;#8217;s not so much the &amp;#8220;print&amp;#8221; part that&amp;#8217;s the problem. If any of the big name journals went online-only tomorrow&amp;#8212;and they&amp;#8217;re looking into it&amp;#8212;they would still be distributed through publishers who will want to lock down the distribution channels so they can continue to make money. Publishing online for traditional publishers is actually expensive because they need to recover the revenue they&amp;#8217;re accustomed to getting from print editions, so they have to invest in all sorts of ugly, draconian &lt;span class="caps"&gt;DRM&lt;/span&gt; schemes and restrictive licensing&amp;nbsp;practices. &lt;/p&gt;
&lt;p&gt;So even if every new journal out there was online only, and a good proportion of the less profitable journals converted to online open access journals, you&amp;#8217;d still have an elite core of journals keeping the journal ecosystem expensive and inaccessible. There are too many players&amp;#8212;publishers and associations&amp;#8212;whose well-being depend on these journals to&amp;nbsp;exist.&lt;/p&gt;
&lt;h3&gt;Getting rid of&amp;nbsp;journals&lt;/h3&gt;
&lt;p&gt;In the absence of a print product, why do we need journals at all? There are a bunch of reasons you need entities &lt;em&gt;like&lt;/em&gt; journals, with editors and reviewers. But is there any reason&amp;#8212;aside from the occasional themed &amp;#8220;special issues&amp;#8221;&amp;#8212;where the output of the peer review and editorial process needs to be monthly or bimonthly collections of articles organized like a book, with volume, issue and page numbers and a table of contents, all squeezed into discrete&amp;nbsp;&amp;#8220;issues&amp;#8221;? &lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s an alternative system that I think would work much&amp;nbsp;better: &lt;/p&gt;
&lt;p&gt;Imagine an online publishing system&amp;#8212;not unlike a blog&amp;#8212;where when you&amp;#8217;re ready to share your work, you simply publish it to a website. (Ideally this would even be built into the word processor/text editor you write in: imagine a single &amp;#8220;publish&amp;#8221; button.) Your document shows up on a website, configured specifically for easy reading: a simple layout perfect for reading on a variety of devices or for&amp;nbsp;printing. &lt;/p&gt;
&lt;p&gt;Every academic would publish their work to a website just like this: individuals or institutions could host their own instances of the&amp;nbsp;software. &lt;/p&gt;
&lt;p&gt;There would be some sort of common identity management (OpenID maybe) built in to the system. If you only want a few people (individuals or institutions) to have access to early drafts, there&amp;#8217;s an easy way to specify&amp;nbsp;that. &lt;/p&gt;
&lt;p&gt;This system would have a versioning system built-in: each published version would be labeled and scrolling back through previous versions would be&amp;nbsp;easy. &lt;/p&gt;
&lt;p&gt;Some sort of commenting/discussion system would be built-in as well.&amp;nbsp;Obviously.&lt;/p&gt;
&lt;p&gt;In other words, it would do pretty much what WordPress or Drupal can now do out of the box, only have some specific tweaks and optimizations for academic work. (In fact, such a system could be implemented through a WordPress plugin and/or&amp;nbsp;theme!)&lt;/p&gt;
&lt;p&gt;Now imagine the following: you no longer submit manuscripts to journals. At least not like you do now. &amp;#8220;Journals&amp;#8221; are replaced with a system of organizations of some sort that manage the peer review process and lend their seal of approval to work they find of high quality. You grant them access to your article, and the &amp;#8220;journal&amp;#8221; coordinates finding expert reviewers for your work and gives you feedback right there on your website: including reviewer comments and including final judgments like &amp;#8220;reject&amp;#8221;, &amp;#8220;revise and resubmit&amp;#8221; or, of course, &amp;#8220;accepted&amp;#8221;.  An accepted article would be a seal of approval, vouching for the quality of your work, not a promise to publish in some&amp;nbsp;collection.&lt;/p&gt;
&lt;p&gt;Some interesting potential consequences of a system like&amp;nbsp;this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Instead of keeping all of their work secret to respect the demands of publishers, academics could do all of their writing in public. Individual academics would be self-publishers and would own their own copyright on everything they do. &amp;#8220;Journals&amp;#8221; would no longer publish anything. (I&amp;#8217;ll keep calling them journals though as I haven&amp;#8217;t thought of a better name yet.) Journals would only do the one thing they do well: manage the peer review system and put their authority and reputations behind the work that they feel is the best in the&amp;nbsp;field.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Without the constraints of printing paper issues of a limited size, there&amp;#8217;d be the risk of certain journals accepting everything. Which is fine: this would diminish the reputation of these journals and the more selective journals who only certify the best articles would improve their reputations over&amp;nbsp;time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Since you&amp;#8217;re no longer really submitting to a specific journal, would it be possible to have multiple journals &amp;#8220;accept&amp;#8221; the same article? Possibly. And that seems weird but has some cool possibilities as well: a lot of times really important, influential articles show up in smaller journals and are only read within a small subfield, though they may deserve a bigger audience. The ability of the more selective, generalist journals to add their seal of approval to articles that others have already accepted could be a good&amp;nbsp;thing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Would the peer review process be public as well? For example, would the fact that some journal rejected your article, and the comments from reviewers, be public (if still anonymous) as well? This could go either way, but I think this would be a good thing as&amp;nbsp;well.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;What about the fact that you can change stuff so easily online? Would people keep going back and correcting errors after publication? This is why a good versioning system is key: a journal would review and accept a particular revision of an article and that information would be included with their decision. (If you&amp;#8217;re worried about the ability of authors to manipulate this, source code management software like &lt;a href="http://git-scm.com/"&gt;git&lt;/a&gt; actually uses a &lt;span class="caps"&gt;SHA1&lt;/span&gt; hash of the contents of the files to name the revision. This acts as an integrity check on the data in any given revision. Something like this could be used to ensure that any given revision of a document always refers to the same&amp;nbsp;document.)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now maybe, as I discussed in the first half of this post, just moving the traditional journals online would be good enough. But there&amp;#8217;s a lot I like about this bolder idea. It could have the best of the web as a publishing platform&amp;#8212;flexibility, accessibility and affordability&amp;#8212;but maintain the quality control of the traditional journal system. There are probably some obvious shortcomings I haven&amp;#8217;t thought of or have underestimated (Without the constraints of actually publishing something, would we just end up with a mess of thousands of journals allowing no one to find anything?), but it&amp;#8217;s still a worthwhile thought experiment. Academics have such little control over our publishing system now. It seems to run on pure inertia, and, in my opinion, doesn&amp;#8217;t seem to work in favor of the interests of most&amp;nbsp;academics.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Thu, 07 Jan 2010 14:57:39 -0600</pubDate><guid>tag:,2010-01-07:2010/01/07/post-journal-academic-publishing/</guid></item><item><title>N.apbcbi…Learning Dvorak</title><link>/2009/12/02/napbcbilearning-dvorak/</link><description>&lt;p&gt;My freshman year in high school, I think I was quite possibly the only student in my entire &amp;#8220;Keyboarding&amp;#8221; class who enjoyed the&amp;nbsp;class. &lt;/p&gt;
&lt;p&gt;Going in, I could not touch type. In fact, we didn&amp;#8217;t have a computer at home. My generation was right on the edge of when this was still mostly normal. A few years later everyone had computers at home, and just a few years before, very few people did. So maybe I just thought it was fun to actually play on a computer, but I did enjoy the touch typing lessons. There was something simple and satisfying about having one class each day that was completely calm and quiet, where all I had to do was to try improve on my performance from the day&amp;nbsp;before. &lt;/p&gt;
&lt;p&gt;Plus, I got pretty good pretty quick. I&amp;#8217;ve always suspected it may have something to do with the fact that I&amp;#8217;d been playing guitar my whole life: my hands were pretty coordinated already. In our school we had a &amp;#8220;Keyboarding&amp;#8221; class one semester and &amp;#8220;Computer Applications&amp;#8221; the next, where they basically taught us the blue screen version of Microsoft Word. By the time I was in Computer Applications, I was fast enough I actually had a touch typing race with my instructor one day. (I was faster, but she made less&amp;nbsp;mistakes.)&lt;/p&gt;
&lt;p&gt;Nowadays, much of what I do&amp;#8212;for work or for play&amp;#8212;seems to involve lots of typing. And my body is paying for it. Maybe I&amp;#8217;m dwelling on this more than usual since I turned 30 a few weeks ago, but lately everything I do seems to make some part of me hurt. My back has been bothering me lately, so I&amp;#8217;ve started &lt;a href="http://hivelogic.com/articles/sitting-standing-balance-ball/"&gt;sitting on an exercise ball&lt;/a&gt; at my desk. (I&amp;#8217;ve been doing this for a few weeks now and love it. I can sit for hours and work without all of the uncomfortable fidgeting I always end up doing in chairs.) In the past few years, I&amp;#8217;ve become way more finicky about how I sleep as well. I slept on an awful, old, saggy bed all through college with zero troubles, but now in the past few years, I&amp;#8217;ve become super picky about my bed and&amp;nbsp;pillow. &lt;/p&gt;
&lt;p&gt;And, of course, my hands bother me when I type a&amp;nbsp;lot. &lt;/p&gt;
&lt;p&gt;Aching hands have actually been an issue for a few years now. It&amp;#8217;s actually better than it used to be, thanks to my abandoning Word for a text editor: vi. I had to learn vi a few years back for work, but this requirement actually came at an opportune time: I was in the middle of a heavy writing period and my hands were killing me. I learned this was mostly because of the heavy mousing and acrobatic keyboard shortcuts my word processor was making me go through. Vi, on the other hand, lets you do &lt;em&gt;everything&lt;/em&gt; from the keyboard, and (with the exception of frequent trips to the escape key) lets you keep your hands on the home row keys pretty much all the time. But vi&amp;#8217;s no miracle worker: the hands still hurt, particularly after several days in a row of heavy&amp;nbsp;typing. &lt;/p&gt;
&lt;p&gt;So now that you know all about me, my aging body and the strange pleasure I get in learning new keyboarding techniques&amp;#8212;from touch typing in high school to vi a few years ago&amp;#8212;you can probably see why I&amp;#8217;m susceptible to the Dvorak&amp;nbsp;hype. &lt;/p&gt;
&lt;p&gt;For those of you who aren&amp;#8217;t familiar with the story of the standard &lt;span class="caps"&gt;QWERTY&lt;/span&gt; keyboard layout and the Dvorak layout as an alternative, go read the &lt;a href="http://DVzine.org/zine/index.html"&gt;Dvorak Zine real quick&lt;/a&gt;. It&amp;#8217;s short and fun. But the even shorter summary is that the Dvorak layout is an alternative keyboard layout that&amp;#8217;s designed to be way more logical and efficient than the &lt;span class="caps"&gt;QWERTY&lt;/span&gt; layout. Here it&amp;nbsp;is:&lt;/p&gt;
&lt;p&gt;&lt;a class="aligncenter" href="/static/files/dvorak-1024W.gif"&gt;&lt;img src="/static/files/dvorak-455.gif" width="455px" height="176px" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;(&lt;a href="http://DVzine.org/stuff/downloads.html"&gt;Original here&lt;/a&gt;, then cropped. If you click that, you&amp;#8217;ll get a big version that I&amp;#8217;ve had set as my desktop background for the past few weeks as a quick&amp;nbsp;reference.)&lt;/p&gt;
&lt;p&gt;A few weeks ago, WordPress developer Donncha O Caoimh &lt;a href="http://ocaoimh.ie/89495386/slowly-learning-dvorak/"&gt;wrote&lt;/a&gt; that Matt Mullenweg, &lt;a href="http://ma.tt/2003/08/on-the-dvorak-keyboard-layout/"&gt;a Dvorak user&lt;/a&gt;, had convinced him to give Dvorak a try. I followed some links, did some reading, and decided to give it a shot. If nothing else, it sounded exactly like the sort of crazy experiment I seem to enjoy inflicting on myself. And hey, vi worked&amp;nbsp;out.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s what I decided to do: I&amp;#8217;d try &lt;a href="http://learn.dvorak.nl/"&gt;some lessons&lt;/a&gt; during breaks and during otherwise unproductive activities (while watching &lt;span class="caps"&gt;TV&lt;/span&gt;, for example). I didn&amp;#8217;t have the time to switch completely overnight: my productivity would just slow to a crawl. The only way to make this work for me, for better or worse, is to learn to switch back and forth. So I knew I didn&amp;#8217;t want to resort to using a special keyboard or switching around my keycaps. My wife and I share our computers and that would just be mean, for one thing. But more than that, the whole point is to become a more efficient touch typist. Plus ideally my &lt;span class="caps"&gt;QWERTY&lt;/span&gt; skills won&amp;#8217;t deteriorate entirely: it&amp;#8217;d be a real pain to be an awful &lt;span class="caps"&gt;QWERTY&lt;/span&gt; typist in this &lt;span class="caps"&gt;QWERTY&lt;/span&gt; world. So once I knew the layout and could touch type&amp;#8212;albeit slowly and with lots of errors&amp;#8212;I started to force myself to use Dvorak for short stretches of time when I knew typing speed would not be that big of a deal (reading and replying to emails, playing around on the web, etc.). I also found that when I&amp;#8217;m really &lt;em&gt;writing&lt;/em&gt;&amp;#8212;as opposed to typing emails or stuff like that&amp;#8212;my thinking speed, not typing speed, is the bottleneck, so Dvorak actually wasn&amp;#8217;t that much of a&amp;nbsp;hindrance.&lt;/p&gt;
&lt;p&gt;This is pretty much the phase I&amp;#8217;m still in now. It didn&amp;#8217;t take that long to get to this stage, but going from here to matching my &lt;span class="caps"&gt;QWERTY&lt;/span&gt; proficiency is still a pretty daunting task. Rather than waiting to write this up though, I thought it&amp;#8217;d be fun to write this now, when I honestly don&amp;#8217;t know if I&amp;#8217;ll stick with it or not. I&amp;#8217;m far enough in to see the real advantages, but still limping along enough to see the&amp;nbsp;trade-offs.&lt;/p&gt;
&lt;p&gt;Whether you think it&amp;#8217;s worth it to completely relearn how to type or not, it only takes a few short lessons to realize that, all other things equal, it&amp;#8217;s a much more logical layout. Not that this would take much: there&amp;#8217;s pretty much no logic to the &lt;span class="caps"&gt;QWERTY&lt;/span&gt; keyboard. We all have to learn it though, so for some reason it doesn&amp;#8217;t seem so bad. In the Dvorak layout, the most commonly used keys are in the home row. Vowels are on the left (&lt;span class="caps"&gt;AOEU&lt;/span&gt; are where &lt;span class="caps"&gt;ASDF&lt;/span&gt; are, with I in G&amp;#8217;s place) and your right hand rests on &lt;span class="caps"&gt;HTNS&lt;/span&gt;, the most frequently used consonants. I suppose there&amp;#8217;s some satisfaction in knowing you&amp;#8217;re using a more elegant and efficient layout than everyone else, but that&amp;#8217;s hardly a reason to switch. It&amp;#8217;s the comfort and the reduced strain on your hands that is so appealing to&amp;nbsp;me. &lt;/p&gt;
&lt;p&gt;But it&amp;#8217;s not clear to me yet that it&amp;#8217;s necessarily a complete improvement over &lt;span class="caps"&gt;QWERTY&lt;/span&gt; on the hand strain issue. For one thing, all your keyboard shortcuts change too. When you use some keyboard shortcuts so much, they become gestures. You don&amp;#8217;t even associate Command-W with &amp;#8220;W&amp;#8221;, it&amp;#8217;s just the gesture you make when you want to close a window. If you&amp;#8217;re a vi user, then this is particularly challenging as the whole interface is built around keyboard gestures. And many gestures&amp;#8212;such as Command-X, C and V for cut, copy and pasting, or &amp;#8220;hjkl&amp;#8221; for cursor movement in vi&amp;#8212;were chosen not for their mnemonic value, but for their positioning on a &lt;span class="caps"&gt;QWERTY&lt;/span&gt; keyboard. An additional source of skepticism I have is that the most strenuous keyboard motions are unchanged in Dvorak: Delete/Backspace, Shift, Return, the Control/Command/Option combos, etc. Combine this with the &amp;#8220;&lt;span class="caps"&gt;XCV&lt;/span&gt;&amp;#8221; problem and it seems like Dvorak may actually make some of this worse. Yes, Dvorak was designed to be fast and efficient when typing English sentences, but many of the other ways we use our keyboards have been designed to be fast and efficient on our otherwise inefficient &lt;span class="caps"&gt;QWERTY&lt;/span&gt;&amp;nbsp;keyboards. &lt;/p&gt;
&lt;p&gt;(Macs offer a &amp;#8220;Dvorak-&lt;span class="caps"&gt;QWERTY&lt;/span&gt;&amp;#8221; layout which, when I first heard about it, seemed perfect: the keyboard reverts to &lt;span class="caps"&gt;QWERTY&lt;/span&gt; whenever you press Command. Unfortunately, it stays in Dvorak when you press Control, which makes this useless in my opinion. If you can only get &lt;span class="caps"&gt;QWERTY&lt;/span&gt; for some of your keyboard shortcuts and not others, that doesn&amp;#8217;t help: it just makes things more&amp;nbsp;confusing.)&lt;/p&gt;
&lt;p&gt;Also, while my hands may be hurting less after a long session in Dvorak, I&amp;#8217;m also typing much slower, and because my keypresses are more tentative, much &lt;em&gt;softer&lt;/em&gt;. I type too hard. And these low-travel keyboards all the Macs have these days really punish hard typers. It&amp;#8217;s possible I could save myself much of my hand pain by just learning to type more softly. Also, once I get up to speed with Dvorak, I could end up typing harder&amp;nbsp;again.&lt;/p&gt;
&lt;p&gt;Other funny things about making the transition from&amp;nbsp;&lt;span class="caps"&gt;QWERTY&lt;/span&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class="caps"&gt;QWERTY&lt;/span&gt; puts all of the funny keys off to the right of the keyboard, while Dvorak spreads then out more. It&amp;#8217;s really hard to learn to use your left hand for punctuation and for brackets. Likewise, the key that is &amp;#8220;[{&amp;#8221; in &lt;span class="caps"&gt;QWERTY&lt;/span&gt; is &amp;#8220;/&amp;#8221; and &amp;#8220;?&amp;#8221; in Dvorak. Next door, &amp;#8220;=+&amp;#8221; replaces &amp;#8220;]}&amp;#8221; too. You use these in normal writing way more often and I find I&amp;#8217;m really bad at hitting these key. (Although, you do use this keys a lot in programming and I&amp;#8217;ve always struggled with touch typing those keys while programming,&amp;nbsp;too.)&lt;/li&gt;
&lt;li&gt;The hardest keys for me to keep straight are the ones close to their &lt;span class="caps"&gt;QWERTY&lt;/span&gt; equivalents: y and b constantly trip me&amp;nbsp;up.&lt;/li&gt;
&lt;li&gt;I find that moving back and forth between &lt;span class="caps"&gt;QWERTY&lt;/span&gt; and Dvorak is relatively easy (usually a few awkward sentences or two), but here&amp;#8217;s what&amp;#8217;s really funny about it: I can still type &lt;span class="caps"&gt;QWERTY&lt;/span&gt; really fast, but if I slow down, I&amp;#8217;ll switch back to Dvorak. (The same is true in reverse, but that&amp;#8217;s not surprising.) It&amp;#8217;s like I&amp;#8217;ve gotten used to two typing modes: slow, methodical Dvorak, where I really have to focus on which keys I&amp;#8217;m pressing, and then &lt;span class="caps"&gt;QWERTY&lt;/span&gt; autopilot&amp;nbsp;mode. &lt;/li&gt;
&lt;li&gt;I&amp;#8217;ll probably just have to quit &lt;span class="caps"&gt;QWERTY&lt;/span&gt; cold turkey at some point if I really want to master Dvorak, though I really don&amp;#8217;t want to lose my &lt;span class="caps"&gt;QWERTY&lt;/span&gt; proficiency either. I&amp;#8217;ve heard people compare the two to learning a second language (you can still speak your first language) or a second musical instrument. A few weeks into my &lt;span class="caps"&gt;QWERTY&lt;/span&gt; experiment, I&amp;#8217;ve got another analogy that, as a guitar player, seems to fit a bit better to me: it&amp;#8217;s like learning an alternate tuning. The notes are still the same, but all of your fingerings have to&amp;nbsp;change.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So, as is clear from my various complaints and skepticism, I&amp;#8217;m not totally sure how much longer I&amp;#8217;ll stick with this. However, I do find&amp;#8212;surprise, surprise&amp;#8212;that as I get better, I like it more. Despite the negative stuff I&amp;#8217;ve written here, in those short bursts of emerging Dvorak proficiency I&amp;#8217;ll get every so often (usually until I start thinking about it and make a mistake), it does give typing a different rhythm and feel that is quite nice. You really do spend more of your time with your hands in a comfortable &amp;#8220;home row&amp;#8221; position and less time with your hands flailing&amp;nbsp;about. &lt;/p&gt;
&lt;p&gt;So will I stick with this strange keyboard layout? Or will I give into years of habit and the temptation of properly labelled keys and go running back to the familiarity of &lt;span class="caps"&gt;QWERTY&lt;/span&gt;? Time will&amp;nbsp;tell. &lt;/p&gt;
&lt;p&gt;Finally, you may be wondering, did I write this post in Dvorak? Most of it. The first few paragraphs were written in &lt;span class="caps"&gt;QWERTY&lt;/span&gt;, but once I started writing about Dvorak, it seemed only fair I struggle through the whole thing in&amp;nbsp;Dvorak. &lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Wed, 02 Dec 2009 00:00:00 -0600</pubDate><guid>tag:,2009-12-02:2009/12/02/napbcbilearning-dvorak/</guid></item><item><title>Open Source Design</title><link>/2009/10/19/open-source-design/</link><description>&lt;p&gt;I really want to love Linux as a desktop &lt;span class="caps"&gt;OS&lt;/span&gt;. I went through a phase where I had nearly convinced myself to switch, but the &lt;span class="caps"&gt;UI&lt;/span&gt; stuff kept stopping me from taking the&amp;nbsp;plunge.&lt;/p&gt;
&lt;p&gt;I should clarify: the &lt;em&gt;&lt;span class="caps"&gt;GUI&lt;/span&gt;&lt;/em&gt; kept getting in the way. I&amp;#8217;m quite fond of the command line, and think there&amp;#8217;s an elegance and beauty to a great command line/console interface. And Linux excels here. But let&amp;#8217;s put it this way: while I can appreciate things like &lt;a href="http://www.nongnu.org/ratpoison/"&gt;ratpoison&lt;/a&gt;, I&amp;#8217;m not about to spend all day working like that. And sadly, when you move into &lt;span class="caps"&gt;GUI&lt;/span&gt; software, the Linux experience still falls down for me, despite big improvements over the last few&amp;nbsp;years.&lt;/p&gt;
&lt;p&gt;It may seem superficial, but little things like how fonts look and consistency between applications matter a lot when you work on a computer all day. As design people like to say: design is how it works, not how it looks. It&amp;#8217;s not just that &lt;span class="caps"&gt;GNOME&lt;/span&gt; looks like a cartoon interface, or that &lt;span class="caps"&gt;KDE&lt;/span&gt; looks like an ugly version of Windows, it&amp;#8217;s that they actually feel and behave like that, too. (I know, I know: lots of people are perfectly happy with &lt;span class="caps"&gt;GNOME&lt;/span&gt; and &lt;span class="caps"&gt;KDE&lt;/span&gt;. Lots of people are happy with Windows, too. And typewriters and chalkboards, for that&amp;nbsp;matter.)&lt;/p&gt;
&lt;p&gt;This is not a new criticism of open source software. &lt;a href="http://daringfireball.net/2004/04/spray_on_usability"&gt;Gruber expresses&lt;/a&gt; a  common explanation for open source usability&amp;nbsp;woes:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The distributed, collaborative nature of open source software
works for developer-level software, but works against
user-level software. Imagine a motion picture produced like a
large open source project. Different scenes written and
directed by different people, spread across the world. Editing
decisions forged by group consensus on mailing lists. The
result would be unfocused, incoherent, and&amp;nbsp;unenjoyable.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Software &lt;span class="caps"&gt;UI&lt;/span&gt; design, the argument goes, requires &lt;a href="http://www.youtube.com/watch?v=xk3UcgbbmxQ"&gt;an auteur&lt;/a&gt;, a chief architect with a clear, elegant, demanding vision of how things should work. Steve Jobs is obviously the most popular example these days. Everything that comes out of Apple &lt;em&gt;is&lt;/em&gt; Steve. Good and bad. But generally good. At least for most&amp;nbsp;people. &lt;/p&gt;
&lt;p&gt;Matthew Paul Thomas, who has written two widely cited essays (&lt;a href="http://web.archive.org/web/20030201183139/http://mpt.phrasewise.com/discuss/msgReader$173"&gt;one&lt;/a&gt;, &lt;a href="http://mpt.net.nz/archive/2008/08/01/free-software-usability"&gt;two&lt;/a&gt;) on the poor usability of Free Software, also highlights this&amp;nbsp;problem:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In the absence of dedicated designers, many contributors to a
project try to contribute to human interface design, regardless of
how much they know about the subject. And multiple designers
leads to inconsistency, both in vision and in detail. The
quality of an interface design is inversely proportional to the
number of&amp;nbsp;designers.&lt;/p&gt;
&lt;p&gt;Solution: Projects could have a lead human interface designer, who
fields everyone else’s suggestions, and works with the
programmers in deciding what is implementable. And more
detailed design specifications and guidelines could help
prevent programmer-specific&amp;nbsp;foibles.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In other words, decision making over design needs to be more centralized and consistent. Thomas is now working on software usability for Canonical, where Mark Shuttleworth has made improving usability a top priority with the &lt;a href="https://wiki.ubuntu.com/Ayatana"&gt;Ayatana&lt;/a&gt;&amp;nbsp;project:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The focus of the project is to improve the perception and presentation of information in the desktop, hence the name of the project; the Buddhist term for a &amp;#8220;sense base&amp;#8221; or &amp;#8220;sense&amp;nbsp;sphere.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;(Notice the missing quote mark at the end of that sentence. Can&amp;#8217;t make this stuff&amp;nbsp;up.)&lt;/p&gt;
&lt;p&gt;Punctuation problems aside, this is great to see. Shuttleworth has explicitly said he wants to meet or surpass &lt;span class="caps"&gt;OS&lt;/span&gt; X&amp;#8217;s usability,&amp;nbsp;specifically. &lt;/p&gt;
&lt;p&gt;Given it&amp;#8217;s an open source design project, it&amp;#8217;s interesting to see how they&amp;#8217;re dealing with this &amp;#8220;auteur&amp;#8221; problem. The other day, &lt;a href="https://lists.launchpad.net/ayatana/msg00718.html"&gt;Shuttleworth announced&lt;/a&gt; he was starting an invitation-only mailing list for those involved in the Ayatana project. The list will still be publicly archived, so anyone can read but only team members can contribute. He&amp;nbsp;adds:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I&amp;#8217;m aware this proposal could result in outrage over barriers to
participation. But I think it will be more effective if we try to build a
core team that knows each other well and can establish norms and&amp;nbsp;relationships.&lt;/p&gt;
&lt;p&gt;Besides, I don&amp;#8217;t think effective design would come from purely freeform
participation. At the moment, I have final signoff of specifications coming
from the design team into Ubuntu. In due course, that responsibility will be
assumed by someone in the Canonical design&amp;nbsp;team. &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This seems like a relatively modest thing for a design team to want. Of course, it&amp;#8217;s&amp;nbsp;controversial.&lt;/p&gt;
&lt;p&gt;Actually, having read through the responses on the mailing list, many, if not most, of the responses are positive. But the critical comments are interesting because they really point to the differences in philosophy about how to make design decisions and organize design work. &lt;a href="https://lists.launchpad.net/ayatana/msg00743.html"&gt;For example&lt;/a&gt;: &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I think a more closed list will make it more likely that only one vision appears in the&amp;nbsp;code.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Isn&amp;#8217;t that the&amp;nbsp;point?&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lists.launchpad.net/ayatana/msg00746.html"&gt;Another suggestion&lt;/a&gt; is to create an &amp;#8220;Ubuntu Design Board&amp;#8221; that will certify particular people with &amp;#8220;Ubuntu Designer&amp;#8221; status, qualifying them to&amp;nbsp;participate. &lt;/p&gt;
&lt;p&gt;Except design qualifications alone aren&amp;#8217;t the problem: even highly competent designers can have wildly different ideas of what&amp;#8217;s right. And as a user, I&amp;#8217;d rather have to learn a single set of principles that work everywhere&amp;mdash;even if they&amp;#8217;re not the principles I might have come up with on my own&amp;mdash;than have a few applications that work exactly the way I like but have every other application work completely&amp;nbsp;differently. &lt;/p&gt;
&lt;p&gt;As neither an expert software developer nor an expert interface designer, I don&amp;#8217;t really have much else to offer here other than pointing out an interesting debate. One of the reasons I&amp;#8217;d love to switch to Linux is that I love the idea of using only open source software. And, of course, the output of the Ayatana project &lt;em&gt;will&lt;/em&gt; be open source software. But will they have to disavow a traditional &amp;#8220;open source development model&amp;#8221; to build that&amp;nbsp;software? &lt;/p&gt;
&lt;p&gt;Although, isn&amp;#8217;t the idea of an &amp;#8220;open source model&amp;#8221; kind of a myth anyway? Most of the classic open source success stories that build developer-level tools are still managed, ultimately, by a handful of people. And when they make decisions about the future of the project, because someone has to, they get called dictators&amp;nbsp;too. &lt;/p&gt;
&lt;p&gt;The problem with open source usability may be less about an inability to break with some mythical &amp;#8220;open source model&amp;#8221; and more about the fact that no one has yet stepped forward to exercise the kind of control necessary to make open source interfaces work well. Maybe the &amp;#8220;open source way&amp;#8221; is just an excuse that gets in the way because everyone has opinions about GUIs compared to, say, opinions about how the kernel should work. So, good luck, Mark&amp;nbsp;Shuttleworth.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Mon, 19 Oct 2009 00:00:00 -0500</pubDate><guid>tag:,2009-10-19:2009/10/19/open-source-design/</guid></item><item><title>Sexism, Software and Organizations</title><link>/2009/09/12/sexism-software-and-organizations/</link><description>&lt;p&gt;The lack of women in open source software has been getting some attention lately, and &lt;a href="http://itmanagement.earthweb.com/osrc/article.php/3838186"&gt;the numbers&lt;/a&gt; are pretty&amp;nbsp;shocking:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;According to Angela Byron&amp;#8217;s keynote at the Open Web Vancouver conference earlier this year, women compose 28% of those involved in proprietary software, slightly more than half what you would expect from a random&amp;nbsp;distribution.&lt;/p&gt;
&lt;p&gt;Asked to guess what percentage of &lt;span class="caps"&gt;FOSS&lt;/span&gt; developers are women, mostly people guess a number between 30-45%. A few, either more observant or anticipating a trick question after hearing the proprietary figure, guess 12-16%. The exact figure, though, is even lower:&amp;nbsp;1.5%&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So, just to be clear, there are two issues here: Why are there less women than men in programming generally? And why is the proportion of women so much lower in open source software than in proprietary software? The second question is what I&amp;#8217;m writing about&amp;nbsp;here.&lt;/p&gt;
&lt;p&gt;Byron&amp;#8217;s &lt;a href="http://webchick.net/presentations/women-in-open-source-owv-09"&gt;keynote&lt;/a&gt; (&lt;a href="http://openwebvancouver.ca/sites/default/static/files/byron-women_in_open_source.pdf"&gt;&lt;span class="caps"&gt;PDF&lt;/span&gt;&lt;/a&gt;) lists four reasons why open source may be specifically hostile to&amp;nbsp;women:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Anonymity can create a safe haven for&amp;nbsp;abuse&lt;/li&gt;
    &lt;li&gt;Open source can be&amp;nbsp;combative&lt;/li&gt;
    &lt;li&gt;Common perception: you must be Einstein to contribute to open&amp;nbsp;source&lt;/li&gt;
    &lt;li&gt;&lt;span class="caps"&gt;OMG&lt;/span&gt;! A&amp;nbsp;&lt;span class="caps"&gt;GURL&lt;/span&gt;!!!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I&amp;#8217;ll suggest a fifth. At last year&amp;#8217;s ASAs, &lt;a href="http://asociologist.wordpress.com/"&gt;Dan Hirschman&lt;/a&gt; and I were talking about how the informality of &lt;span class="caps"&gt;OSS&lt;/span&gt; could be part of the problem. (I say &lt;em&gt;we&lt;/em&gt; discussed it, but I remember all of the good ideas coming from&amp;nbsp;Dan.)&lt;/p&gt;
&lt;p&gt;Much of the commentary on this topic seems to revolve around the personalities of open source developers or the culture of particular communities. But a big, obvious difference between community-run open source projects and proprietary software produced by for-profit corporations is that they&amp;#8217;re controlled by very different types of&amp;nbsp;organizations. &lt;/p&gt;
&lt;p&gt;Large businesses and organizations put formal hiring and promotional policies in place. Yes, they have formal policies with respect to racial and gender diversity, but it&amp;#8217;s more than just those specific policies. When informal criteria weigh more heavily in hiring and promotion, in-group biases have more of an impact (think &amp;#8220;Jack&amp;#8217;s one of the guys,&amp;#8221; vs. &amp;#8220;Jill just doesn&amp;#8217;t fit in here&amp;#8221;). Even if the people involved deny explicit bias (&amp;#8220;It&amp;#8217;s not &lt;em&gt;because she&amp;#8217;s a women&lt;/em&gt; she doesn&amp;#8217;t fit in!&amp;#8221;), people tend to prefer people like them. This is particularly true in jobs with a more informal work environment. Think  of businessmen hammering out deals on the golf course, or schmoozing clients with box seats at the big football game. Or two geeks chatting on &lt;span class="caps"&gt;IRC&lt;/span&gt; at 3 a.m. Or &lt;a href="http://geekfeminism.wikia.com/wiki/CouchDB_talk"&gt;filling a conference presentation with crude images&lt;/a&gt; in an attempt to be&amp;nbsp;&amp;#8220;edgy&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Byron suggests some ways to make &lt;span class="caps"&gt;OSS&lt;/span&gt; more conducive to female participation, and &lt;a href="http://www.freesoftwaremagazine.com/columns/ten_easy_ways_attract_women_your_free_software_project"&gt;others have made suggestions, too&lt;/a&gt;. Here&amp;#8217;s another thought though: as open source software increasingly becomes big business, with large corporations like Google, Oracle and &lt;span class="caps"&gt;IBM&lt;/span&gt; supporting much of open source software development, the pathways to get involved with open source projects will become more structured and formalized, and this will diversify &lt;span class="caps"&gt;OSS&lt;/span&gt;. In other words, &amp;#8220;Oracle is looking for a full-time MySQL developer&amp;#8221; vs. &amp;#8220;Just email this patch to that nerdy white guy who looks exactly like all your&amp;nbsp;friends.&amp;#8221;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve always been interested in&amp;#8212;and sympathetic towards&amp;#8212;attempts to create less hierarchical, bureaucratic and informal organizations. This is part of the reason I&amp;#8217;m a big fan of open source software. It&amp;#8217;s also one of the reasons I&amp;#8217;m fascinated and frustrated by the weak spots in these kinds of organizations and communities. The idea that a takeover by big bland corporations could actually diversify &lt;span class="caps"&gt;OSS&lt;/span&gt; would probably rub most open source folks the wrong way as well. They pride themselves on being free, open and all that good happy stuff. But sometimes, paradoxically, these inclusive values can actually foster social arrangements that facilitate&amp;nbsp;exclusion.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Sat, 12 Sep 2009 00:00:00 -0500</pubDate><guid>tag:,2009-09-12:2009/09/12/sexism-software-and-organizations/</guid></item><item><title>The Salmon Letter</title><link>/2009/09/03/the-salmon-letter/</link><description>&lt;p&gt;I almost never remember my dreams, so when I do remember a particularly funny dream, I feel I must share&amp;nbsp;it.&lt;/p&gt;
&lt;p&gt;Last night, I dreamt I&amp;#8217;d left my laptop at a coffee shop inside a mall. It wasn&amp;#8217;t a mall I recognized, but I knew it was definitely a local mall. You know how dreams are like that,&amp;nbsp;right? &lt;/p&gt;
&lt;p&gt;The main chunk of the dream was me trying to write a letter to this coffee shop to tell them that I&amp;#8217;d left my laptop there and ask if they could please return it to&amp;nbsp;me.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s odd enough I was writing a letter. In fact, throughout the dream, Teresa was sitting with me at our kitchen table asking me why I couldn&amp;#8217;t just call them, or just drive out to the mall to get it. &amp;#8220;I just can&amp;#8217;t&amp;#8221;, I kept saying. No idea why I couldn&amp;#8217;t. I just knew that this was not a viable option. I had to write a&amp;nbsp;letter.&lt;/p&gt;
&lt;p&gt;But here&amp;#8217;s the catch. I couldn&amp;#8217;t write. It was like one of those dreams where you&amp;#8217;re trying to run and you just. can&amp;#8217;t. move. your. legs. Only it was my hand that wasn&amp;#8217;t&amp;nbsp;cooperating. &lt;/p&gt;
&lt;p&gt;And to make things even more strange: I couldn&amp;#8217;t find paper to write on. I was frantically pacing around our house looking for some paper and an envelope to address. I remember addressing an envelope&amp;#8212;painfully&amp;#8212;and then turning to the&amp;nbsp;letter. &lt;/p&gt;
&lt;p&gt;Only when I looked down at the letter, I&amp;#8217;m writing it on a piece of salmon. Obviously, I wasn&amp;#8217;t making much progress. The pen was all crusty with salmon stuff and the salmon was just a&amp;nbsp;mess.&lt;/p&gt;
&lt;p&gt;And I was so pissed off about all of&amp;nbsp;this.&lt;/p&gt;
&lt;p&gt;So all this time, Teresa&amp;#8217;s asking &amp;#8220;Why don&amp;#8217;t you just call them?&amp;#8221; And then I remember I started to doubt my commitment to writing the letter as well. Why can&amp;#8217;t I just go down to the mall? Why can&amp;#8217;t I just pick up the phone? Why on earth was I writing a letter on&amp;nbsp;salmon?&lt;/p&gt;
&lt;p&gt;And then I woke&amp;nbsp;up.&lt;/p&gt;
&lt;p&gt;By the way, I haven&amp;#8217;t eaten salmon in at least a month or two, by the way, so I have no clue where the salmon came&amp;nbsp;from.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Thu, 03 Sep 2009 00:00:00 -0500</pubDate><guid>tag:,2009-09-03:2009/09/03/the-salmon-letter/</guid></item><item><title>Let It Bleed</title><link>/2009/08/29/let-it-bleed/</link><description>&lt;p&gt;You know how when you&amp;#8217;re playing through a distorted amp, you can turn down the volume on your guitar and the amp will clean up? The only problem is that the high end gets cut off as well, right?  There&amp;#8217;s actually an incredibly cheap &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; easy fix for this: the &amp;#8220;Treble Bleed Circuit&amp;#8221;.  Once installed, your guitar&amp;#8217;s volume knob leaves the highs alone when you roll back the volume. Here&amp;#8217;s &lt;a href="http://www.blueskillet.com/Treble%20Bleed%20Circuit%20Mods.htm#LP_Classic"&gt;a better description&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
    When you turn your guitar&amp;#8217;s volume down, you&amp;#8217;re allowing some of the current to go to ground as opposed to going out to the amp to make sound.  (Think of it like a valve that diverts water&amp;#8217;s flow when you turn it&amp;#8230;&amp;#8230;)  When you do this, the frequencies that leave first are the high ones, which makes the tone seem muddy and thick, without the &amp;#8220;edge&amp;#8221; on it.

    A way to avoid this is by using what&amp;#8217;s called a treble bleed circuit.  It&amp;#8217;s called this because it prevents the treble frequencies from bleeding off.  It allows some of the treble frequencies (the ones we want to keep) to walk around the volume pot to the output, rather than go through it and get lost to ground.
&lt;/blockquote&gt;

&lt;p&gt;I&amp;#8217;ve always been a Volume knob tweaker as I hate dealing with foot pedals (I&amp;#8217;m just too much of a klutz), but I&amp;#8217;ve never been completely happy with the results, especially on the neck pickups as it was just too muddy. I&amp;#8217;d heard about this mod many times, and while I&amp;#8217;m not afraid to play around with my guitar&amp;#8217;s electronics, I&amp;#8217;d never bothered trying it myself until yesterday. Guitarists are full of mythical tricks to improve your tone &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; many of them are questionable, so maybe that&amp;#8217;s why I never really took it all that seriously. Well, that and it would require a trip to RadioShack and I&amp;#8217;m both lazy and forgetful when it comes to stuff like&amp;nbsp;this.&lt;/p&gt;
&lt;p&gt;In this case, however, the effect is strong &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; immediately noticeable. For less than $2 and a little work wielding a soldering iron, it will dramatically change the way your guitar&amp;#8217;s volume knob&amp;nbsp;reacts.&lt;/p&gt;
&lt;p&gt;You just take a capacitor (I used &lt;a href="http://www.radioshack.com/product/index.jsp?productId=2062362"&gt;this $1.49 0.001 &amp;micro;F capacitor&lt;/a&gt; from RadioShack) and wire it to your guitar&amp;#8217;s volume knob &lt;a href="http://www.bothner.co.za/articles/volumepot2.shtml"&gt;like this tutorial explains&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img class="aligncenter" src="/static/files/treble-bleed.gif" height="200px" width="220px" alt="Treble Bleed Image" title="Treble Bleed Image" /&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve got a &lt;a href="http://www.carvinguitars.com/catalog/guitars/index.php?model=gk1t"&gt;Carvin Bolt Kit&lt;/a&gt; with two DiMarzio Breed pickups and the stock &lt;span class="caps"&gt;AP11&lt;/span&gt; &lt;a href="http://www.dimarzio.com/media/diagrams/C.pdf"&gt;wired like a Jem&lt;/a&gt;. Playing through a completely distorted amp (I have a Mesa/Boogie, so it does indeed get very dirty), I can roll back the volume from 10 to 3 or so and go from a fat, round, fuzzy neck humbucker sound to a bright, clear-but-slightly-gritty bluesy tone. Pop the five way switch to the 4th position and I&amp;#8217;m completely in Strat territory. It&amp;#8217;s not a completely clean sound, but I like the way a clean Strat sounds just as it&amp;#8217;s starting to break up&amp;#8212;when you can pick quietly and get a clean sound, but dig in more and make the amp break up and sustain&amp;#8212;and this lets me get that sound without switching channels and without settling for either a muddy clean sound on 3 or a piercing, harsh distorted sound on&amp;nbsp;10.&lt;/p&gt;
&lt;p&gt;There are many variations on this modification, many because people think just the .001&amp;micro;F cap alone preserves &lt;em&gt;too much&lt;/em&gt; high end. And my guitar does actually sound more trebly as the volume goes down now. But I like my clean sounds to be bright &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; clear and prefer more fullness to my distorted sounds, so for me, this is actually a feature, not a&amp;nbsp;bug.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Sat, 29 Aug 2009 00:00:00 -0500</pubDate><guid>tag:,2009-08-29:2009/08/29/let-it-bleed/</guid></item><item><title>WordPress Inconsistency</title><link>/2009/08/06/wordpress-inconsistency/</link><description>&lt;p&gt;I&amp;#8217;ve been knee-deep in WordPress the last month or so, building the new theme for contexts.org (mostly) from scratch. (One caveat to that: I borrowed the comments.php from the &lt;a href="http://wordpress.org/extend/themes/prologue"&gt;Prologue theme&lt;/a&gt;. That&amp;#8217;s my least favorite part to theme, for some reason.) Ultimately, I guess I do &lt;em&gt;like&lt;/em&gt; WordPress. I was able to do what I wanted to do, after all. However, after awhile I began assembling a list of gripes about&amp;nbsp;&lt;span class="caps"&gt;WP&lt;/span&gt;. &lt;/p&gt;
&lt;p&gt;The primary theme running through all my gripes is&amp;nbsp;inconsistency. &lt;/p&gt;
&lt;p&gt;For example, if you want to get a path to a directory, do you end with the slash or not? The &lt;code&gt;TEMPLATEPATH&lt;/code&gt; constant gives you &lt;code&gt;/path/to/wp/wp-content/themes/yourtheme&lt;/code&gt;. So no slash. &lt;code&gt;ABSPATH&lt;/code&gt; gives you &lt;code&gt;/path/to/wp/&lt;/code&gt;, slash&amp;nbsp;included.&lt;/p&gt;
&lt;p&gt;Say you want the title of a particular post, do you want it to echo or do you want &lt;span class="caps"&gt;PHP&lt;/span&gt; to just return the result and leave it to you to print? Well, &lt;span class="caps"&gt;WP&lt;/span&gt; has two functions, one for each of these occassions: &lt;code&gt;the_title()&lt;/code&gt; echos the title, &lt;code&gt;get_the_title()&lt;/code&gt; just returns&amp;nbsp;it. &lt;/p&gt;
&lt;p&gt;Now you can question the wisdom of creating multiple functions just for this purpose, but it&amp;#8217;s generalizable, right? Just add &amp;#8220;&lt;code&gt;get_&lt;/code&gt;&amp;#8221; to the front of the function and it&amp;nbsp;works? &lt;/p&gt;
&lt;p&gt;&lt;code&gt;the_content()&lt;/code&gt; and &lt;code&gt;get_the_content()&lt;/code&gt;?&amp;nbsp;Check. &lt;/p&gt;
&lt;p&gt;&lt;code&gt;the_permalink()&lt;/code&gt; and &lt;code&gt;get_the_permalink()&lt;/code&gt;? Oh, no. It&amp;#8217;s &lt;code&gt;get_permalink()&lt;/code&gt; there. &lt;/p&gt;
&lt;p&gt;What about &lt;code&gt;the_date()&lt;/code&gt; and &lt;code&gt;get_the_date()&lt;/code&gt;? No, there is no &lt;code&gt;get_the_date()&lt;/code&gt; because &lt;code&gt;the_date()&lt;/code&gt; takes an &lt;span class="caps"&gt;TRUE&lt;/span&gt;/&lt;span class="caps"&gt;FALSE&lt;/span&gt; argument to decide whether or not it should&amp;nbsp;echo.&lt;/p&gt;
&lt;p&gt;And sometimes there&amp;#8217;s no choice at all: &lt;code&gt;previous_posts_link()&lt;/code&gt; has no &amp;#8220;don&amp;#8217;t echo&amp;#8221; option, so you have to use the &lt;code&gt;ob_start()&lt;/code&gt;/&lt;code&gt;ob_get_contents()&lt;/code&gt;/&lt;code&gt;ob_end_clean()&lt;/code&gt; trick. &lt;/p&gt;
&lt;p&gt;And then there&amp;#8217;s categories vs. tags. This is a purely conceptual distinction, right? The underlying data structure is pretty much identical. Of course, the functions behave completely differently. &lt;code&gt;the_tags()&lt;/code&gt; and &lt;code&gt;the_category()&lt;/code&gt; take completely different arguments even though you&amp;#8217;d expect them to be almost identical. ((Ok, categories can be hierarchical while tags cannot, so that would justify an extra argument for &lt;code&gt;the_category()&lt;/code&gt;, but they&amp;#8217;re more different than&amp;nbsp;that.))&lt;/p&gt;
&lt;p&gt;The point isn&amp;#8217;t that any of these are all that awful on their own, it&amp;#8217;s that they make even the simple act of theme development&amp;#8212;let alone plugin development&amp;#8212;a pain. Every function requires a lookup because there are no safe generalizable rules to learn, at least none I can figure out. Add in the fact that the documentation is itself incomplete and inconsistent and you have some real headaches in store for&amp;nbsp;yourself. &lt;/p&gt;
&lt;p&gt;This inconsistency is completely consistent, by the way, with &lt;span class="caps"&gt;PHP&lt;/span&gt; itself: &lt;code&gt;strip_tags()&lt;/code&gt; vs. &lt;code&gt;stripslashes()&lt;/code&gt;, etc. I recently read an article by Rasmus Lerdorf, creator of &lt;span class="caps"&gt;PHP&lt;/span&gt;, where he explained some of these&amp;nbsp;things:&lt;/p&gt;
&lt;blockquote&gt;
As to function naming itself, I tended to steal/borrow ideas from other languages and APIs I was familiar with. This means that &lt;span class="caps"&gt;PHP&lt;/span&gt; has functions such as strlen( and substr(), which would look silly if written as str_len() or sub_str(). I added things like stripslashes(), which, because of the length, is often written as StripSlashes() to make it easier to read. At the same time, I mimicked low-level database APIs, with functions such as msql_connect()—miniSQL was the first database to be supported by &lt;span class="caps"&gt;PHP&lt;/span&gt;—which used underscore naming. People familiar with these various sources were quite at home with the naming in &lt;span class="caps"&gt;PHP&lt;/span&gt;. &lt;span class="caps"&gt;PHP&lt;/span&gt; was never so much a standalone language as it was an interface between the Web server and all the various back-end tools you wanted to hook into the Web server. Consequently, when people look at &lt;span class="caps"&gt;PHP&lt;/span&gt; today as a standalone language without taking its context into account, it can appear somewhat inconsistent.
&lt;/blockquote&gt;

&lt;p&gt;(Here&amp;#8217;s &lt;a href="http://www.oracle.com/technology/pub/articles/php_experts/rasmus_php.html"&gt;the link&lt;/a&gt;, but it&amp;#8217;s currently dead. Thanks Oracle! And thanks Google: it&amp;#8217;s still in Google&amp;#8217;s&amp;nbsp;cache.)&lt;/p&gt;
&lt;p&gt;In other words, there&amp;#8217;s a &lt;em&gt;social history&lt;/em&gt; of the language, and the languages it&amp;#8217;s based on, that explains the &amp;#8220;somewhat inconsistent&amp;#8221; behavior. The same is true of much of my gripes with WordPress, I suspect. Tags were originally only available via a plugin, so I suspect that has something to do with the inconsistencies between how tags vs. categories are treated. And what if, in the next release of WordPress, the developers decided to go through and purify everything for maximum consistency? A lot of themes and plugins would break, and that would bad, too. It&amp;#8217;s not like the developers are idiots, it&amp;#8217;s just about picking some priorities over&amp;nbsp;others. &lt;/p&gt;
&lt;p&gt;A few episodes back, &lt;a href="http://twit.tv/floss79"&gt;&lt;span class="caps"&gt;FLOSS&lt;/span&gt; Weekly interviewed&lt;/a&gt; David Heinemeier Hansson, the creator of Ruby on Rails. He claims he took the complete opposite approach with Rails: start with a clear vision of how things should work and then consistently apply that vision throughout the whole system. Sounds pretty damn appealing to me right now. Unfortunately, I have no real reason to learn Rails right now. I have a WordPress blog, my job is running a WordPress &lt;span class="caps"&gt;MU&lt;/span&gt; site, and I&amp;#8217;m just now getting into a side project using Drupal, which I am looking forward to. Plus, oh yeah, I&amp;#8217;m trying to finish a dissertation in sociology and all this is officially &amp;#8220;just a hobby.&amp;#8221; So, &lt;span class="caps"&gt;PHP&lt;/span&gt; it is for&amp;nbsp;now.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Thu, 06 Aug 2009 00:00:00 -0500</pubDate><guid>tag:,2009-08-06:2009/08/06/wordpress-inconsistency/</guid></item><item><title>Recording the TPP</title><link>/2009/06/18/recording-the-tpp/</link><description>&lt;p&gt;If you know me at all, you&amp;#8217;ve probably already had me bug you about my band&amp;#8217;s &lt;span class="caps"&gt;EP&lt;/span&gt;, which you can hop over one subdomain to &lt;a href="http://tpp.smajda.com"&gt;tpp.smajda.com&lt;/a&gt; and&amp;nbsp;download.&lt;/p&gt;
&lt;p&gt;You can also listen to &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; download &lt;em&gt;most&lt;/em&gt; of the &lt;span class="caps"&gt;EP&lt;/span&gt; here, via &lt;a href="http://soundcloud.com"&gt;SoundCloud&lt;/a&gt;:&lt;/p&gt;
&lt;iframe width="100%" height="450" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Fplaylists%2F20691"&gt;&lt;/iframe&gt;

&lt;p&gt;(I tried several of these online music sharing services and this is the first one I&amp;#8217;ve liked. Of course I found it &lt;em&gt;right after&lt;/em&gt; I just caved in and set up an Amazon S3 account to host the files, for the next few weeks at least. &lt;del datetime="2009-08-06T03:40:41+00:00"&gt;Unfortunately, you can only upload 5 songs per month to SoundCloud, so to get all 6 songs, you&amp;#8217;ll have to &lt;a href="http://tpp.smajda.com/download/"&gt;download the whole &lt;span class="caps"&gt;EP&lt;/span&gt;&lt;/a&gt; for now.&lt;/del&gt; &amp;#8220;The Project&amp;#8221; and &amp;#8220;The Curse&amp;#8221; are my two favorites at the&amp;nbsp;moment.)&lt;/p&gt;
&lt;p&gt;This was tons of fun to do and I feel pretty good about the way it came out. Sure, it&amp;#8217;s a little rough in places: from some heavy &amp;#8220;p popping&amp;#8221; in the vocals to some cringe-worthy out-of-tune moments on all of our parts, etc. But here&amp;#8217;s the amazing thing to me: we didn&amp;#8217;t spend a dime on recording this. We used only stuff we already had, which, in addition to our instruments,&amp;nbsp;included:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;A single&amp;nbsp;microphone&lt;/li&gt;
    &lt;li&gt;A &lt;a href="http://line6.com/toneportux1/"&gt;Line6 TonePort&amp;nbsp;&lt;span class="caps"&gt;UX1&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;My MacBook with&amp;nbsp;GarageBand&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All the guitar parts are me playing my trusty Carvin kit guitar straight through the &lt;span class="caps"&gt;UX1&lt;/span&gt; using almost exclusively the &amp;#8220;Soldano&amp;#8221; emulator that comes with the &lt;span class="caps"&gt;UX1&lt;/span&gt; (I think &lt;span class="caps"&gt;DND&lt;/span&gt; has the only exceptions: the solo is the &amp;#8220;Marshall&amp;#8221; and the bridge is the &amp;#8220;Roland&amp;#8221; clean channel). The bass, vocals &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; drums went through the &lt;span class="caps"&gt;UX1&lt;/span&gt; as well. The base of every song is a &amp;#8220;live&amp;#8221; drum track and a guitar track that Chris and I recorded simultaneously (using the &lt;span class="caps"&gt;UX1&lt;/span&gt;&amp;#8217;s two inputs). After that we&amp;#8217;d layer on everything else. (And on about half of the songs, almost nothing remains of that initial guitar track I recorded with Chris&amp;nbsp;either.)&lt;/p&gt;
&lt;p&gt;Comparing this to the quality of recordings I made with my (relatively expensive!) tape 4-track back in the day, it&amp;#8217;s pretty damn good. Sometimes our equipment limited us (shoulda bought/made a pop filter for the vocals, the cracked symbol did not help, a good set of mixing monitors/headphones would&amp;#8217;ve helped, multiple mics would&amp;#8217;ve been a good thing, etc.), but many of the problems are also just things we could&amp;#8217;ve fixed if we weren&amp;#8217;t rushing through it (we did this in a few 3-4 hour sessions over a two week&amp;nbsp;period).&lt;/p&gt;
&lt;p&gt;So it was a fun learning experience. For example, mixing: not so easy. You can&amp;#8217;t just make it sound good on whatever you&amp;#8217;re listening to at the moment because different systems vary drastically. On my MacBook with in-ear buds, I had the songs sounding great&amp;#8230;and then I&amp;#8217;d put on a different set of headphones, or listen in the car, or even listen to the mix with &lt;em&gt;the same headphones&lt;/em&gt; plugged into my iMac or an iPod instead &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; it&amp;#8217;d sound awful. Obviously, good studio equipment would&amp;#8217;ve helped but I think it turned out &amp;#8220;okay&amp;#8221; because I just realized you have to go for a very neutral, flat mix, which often means making it sound &lt;em&gt;worse&lt;/em&gt; on whatever particular system you&amp;#8217;re mixing on. (Especially when you&amp;#8217;re using cheap consumer electronics for all this: you don&amp;#8217;t realize how much even two otherwise identical iPods vary in sound until you listen really closely to your own music where you know every&amp;nbsp;detail.)&lt;/p&gt;
&lt;p&gt;As for the music: it&amp;#8217;s fun music, I think. For most of the songs, I&amp;#8217;d suggest a main riff, we&amp;#8217;d collectively work on said riff and come up with a few changes together in practice, then I&amp;#8217;d structure them into coherent songs &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; put some tabs up on a wiki for everyone to learn, and then we took turns coming up with&amp;nbsp;lyrics.&lt;/p&gt;
&lt;p&gt;As you can tell, we realized early on that none of us were up for writing serious lyrics, so we just had fun trying to cram every single metal cliche into the songs. But hey, silly words aside, I&amp;#8217;m proud of many of the vocal melodies we came up with. I honestly do not know how people can sit down and write lyrics that they expect the world to take seriously. It&amp;#8217;s easy to come up with melodies and pointless, but fun, lyrics that fit in with that. I admire anyone who can say, &amp;#8220;I&amp;#8217;m going to make a statement about X&amp;#8221; and make it musical. That takes guts. Or a giant ego. Maybe&amp;nbsp;both.&lt;/p&gt;
&lt;p&gt;We&amp;#8217;re playing an &amp;#8220;&lt;span class="caps"&gt;EP&lt;/span&gt; Release Party&amp;#8221; tomorrow night. (If you&amp;#8217;re in the Twin Cities and want to come, email me for the info.) And then on Sunday, we move to Kansas City. Who knows what will come of the &lt;span class="caps"&gt;TPP&lt;/span&gt;. I&amp;#8217;m glad we squeezed this in before I left because now I feel like we have some document of what we&amp;#8217;ve done over the last year. I know, I know, the project is mostly just fun and silly (seriously, we started as a cover band for our sociology department gatherings: we played &amp;#8220;Footloose&amp;#8221; and &amp;#8220;Blame it on your lying, cheating heart&amp;#8221; our first gig&amp;#8230;), but I&amp;#8217;ve been a guitar player since I was 8 years old and this is the first time I&amp;#8217;ve had a &lt;em&gt;band&lt;/em&gt; &amp;#8212; where I could write songs and then actually hear other people play it. It&amp;#8217;s definitely been a nice side project to have while writing this damn dissertation, I&amp;#8217;ll say that&amp;nbsp;much.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Thu, 18 Jun 2009 00:00:00 -0500</pubDate><guid>tag:,2009-06-18:2009/06/18/recording-the-tpp/</guid></item><item><title>Twitter, Facebook and Respecting Digital Privacy</title><link>/2009/04/14/twitter-facebook-and-respecting-digital-privacy/</link><description>&lt;p&gt;Surprise, surprise: &lt;a href="http://www.macworld.com/article/139962/2009/04/stalkdaily.html"&gt;another Twitter vulnerability was exploited&lt;/a&gt; this weekend. Surprise, surprise: the culprit&amp;#8217;s kind of a&amp;nbsp;loser:&lt;/p&gt;
&lt;blockquote&gt;
When asked why he created the StalkDaily worm, Mooney said, &amp;#8220;Out of boredom. It was the middle of the night and I had nothing else better to do.&amp;#8221;

Also in the interview, Mooney both dismissed his actions and said he knew the attacks could land him in trouble. &amp;#8220;I feel pretty bad about it, but it&amp;#8217;s not me that left the vulnerability out in the open,&amp;#8221; he said, then later added, &amp;#8220;I&amp;#8217;m not worried, though. I know that it could land me in jail.&amp;#8221;

On the StalkDaily Web site, Mooney posted a short message that read: &amp;#8220;I have came clean and have accepted the responsibility for the worm.&amp;#8221;
&lt;/blockquote&gt;

&lt;p&gt;What&amp;#8217;s interesting to me about this is the argument that &amp;#8220;it&amp;#8217;s not me that left the vulnerability out in the open.&amp;#8221;  Let&amp;#8217;s try this out in some other social&amp;nbsp;contexts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It&amp;#8217;s not my fault the lock on their front door was so easy to&amp;nbsp;crack.&lt;/li&gt;
&lt;li&gt;It&amp;#8217;s not my fault they had their wallet hanging out of their coat&amp;nbsp;pocket.&lt;/li&gt;
&lt;li&gt;It&amp;#8217;s not my fault these parents left their kid unmonitored on the playground for a few&amp;nbsp;minutes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lest you think this is just some lame rationalization of criminal behavior by some loser kid with &amp;#8220;nothing better to do,&amp;#8221; this mentality is, for some reason, widely accepted with respect to digital&amp;nbsp;privacy.  &lt;/p&gt;
&lt;p&gt;For example, last year there was some controversy over &lt;a href="http://michaelzimmer.org/2008/09/30/on-the-anonymity-of-the-facebook-dataset/"&gt;facebook data being used by social scientists&lt;/a&gt;.  The data was &amp;#8220;anonymized&amp;#8221; and the research approved by Facebook, but the problems are&amp;nbsp;that: &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Even if you remove names from Facebook data, there&amp;#8217;s still a lot of information there &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; it &lt;a href="http://fstutzman.com/2008/10/07/facebook-dataset-identified/"&gt;may be possible&lt;/a&gt; to still identify individuals or, at least, groups who believed their &lt;em&gt;activity&lt;/em&gt;, not just their identities, were&amp;nbsp;private.&lt;/li&gt; 
&lt;li&gt;Users set privacy options that would appear to disallow this use of their data, anonymized or not.  The privacy options say &amp;#8220;Control who can see your profile and related information.&amp;#8221; They do not add &amp;#8220;Unless it&amp;#8217;s been anonymized by Facebook and handed off to researchers: you have no control over&amp;nbsp;that.&amp;#8221;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The lead researchers on the project defended what they were&amp;nbsp;doing:&lt;/p&gt;
&lt;blockquote&gt;
What might hackers want to do with this information, assuming they could crack the data and ’see’ these people’s Facebook info? Couldn’t they do this just as easily via Facebook itself? Our dataset contains almost no information that isn’t on Facebook. (Privacy filters obviously aren’t much of an obstacle to those who want to get around them.)
&lt;/blockquote&gt;

&lt;p&gt;and&lt;/p&gt;
&lt;blockquote&gt;
The data is already there, this is merely (!) the collection of that data. Or to put it another way, &lt;span class="caps"&gt;AOL&lt;/span&gt; users presumed that no one was watching, but this is very different from Facebook users who are intending to share with someone (if not the researchers).
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="http://michaelzimmer.org/2008/09/30/on-the-anonymity-of-the-facebook-dataset/"&gt;Read Zimmer&amp;#8217;s response for more details&lt;/a&gt;, but this is crazy. The idea that using data like this for social science research is ok because &amp;#8220;hackers could get to it anyway&amp;#8221; is eerily similar, I think, to the rationalization &amp;#8220;Mikeyy&amp;#8221; makes about hacking Twitter.  Let&amp;#8217;s try it this out in another context again: &amp;#8220;Well, a criminal could easily break into your house anyway, so what&amp;#8217;s the harm in me doing it for research? Don&amp;#8217;t worry: I won&amp;#8217;t reveal your identity to&amp;nbsp;anyone!&amp;#8221;&lt;/p&gt;
&lt;p&gt;(To be clear, I don&amp;#8217;t completely blame the researchers for this: I blame Facebook. They were the ones trusted with the data &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; they were the ones who gave it out. Facebook&amp;#8217;s entire niche has always been&amp;#8212;until the last few months when they&amp;#8217;ve started to open up&amp;#8212;that it is &lt;em&gt;private&lt;/em&gt;. It is &lt;em&gt;not&lt;/em&gt; a public space like a blog or a personal website. Anything you put on facebook is understood to be only visible to your &amp;#8220;friends&amp;#8221; and no one else unless you explicitly say so. I&amp;#8217;m guessing there&amp;#8217;s probably a statement in their &lt;span class="caps"&gt;EULA&lt;/span&gt; that makes giving the data away to researchers as long as it&amp;#8217;s anonymized okay, but that doesn&amp;#8217;t mean that the average facebook knew this or consented to it. &lt;span class="caps"&gt;EULA&lt;/span&gt;&amp;#8217;s are a joke, but that&amp;#8217;s for another&amp;nbsp;day.)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Tue, 14 Apr 2009 00:00:00 -0500</pubDate><guid>tag:,2009-04-14:2009/04/14/twitter-facebook-and-respecting-digital-privacy/</guid></item><item><title>todo.txt on the web</title><link>/2009/03/29/todotxt-on-the-web/</link><description>&lt;p&gt;A few weeks ago I finally ended my love/hate relationship with &lt;a href="http://www.rememberthemilk.com"&gt;Remember the Milk&lt;/a&gt; and switched to &lt;a href="http://todotxt.com"&gt;todo.sh&lt;/a&gt;, a bash script for managing your tasks. That probably either sounds really crazy or really cool to you. Obviously, this post is for the latter&amp;nbsp;group.&lt;/p&gt;
&lt;p&gt;I mostly got sick of &lt;span class="caps"&gt;RTM&lt;/span&gt;&amp;#8217;s speed. It&amp;#8217;s not necessarily their fault: it&amp;#8217;s an inherent flaw in using a web app. By using &lt;a href="http://www.getdropbox.com"&gt;Dropbox&lt;/a&gt; with my todo.txt files, I can keep my todo lists in sync on multiple computers and not get stuck waiting for a webpage to load every time I want to add a new&amp;nbsp;task. &lt;/p&gt;
&lt;p&gt;Plus, todo.sh is also very flexible: you can &lt;a href="http://wiki.github.com/ginatrapani/todo.txt-cli/creating-and-installing-plugins"&gt;create plugins&lt;/a&gt; to make it do pretty much anything you&amp;nbsp;want.&lt;/p&gt;
&lt;p&gt;But the web access is handy. Especially on my phone (a Palm Centro) and my iPod touch. Being able to quickly add tasks whenever and wherever you think of them, and to be able to consult your todo list &amp;#8220;on the go&amp;#8221; is a crucial feature. One of my Macs is set up as a web server, so I decided to build a simple web app for interacting with my todo.txt file that would work well on both of these devices. Today I finally got it all working and &lt;a href="http://github.com/smajda/todo.txt-web/tree/master"&gt;put it on github&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s a&amp;nbsp;screenshot:&lt;/p&gt;
&lt;p&gt;&lt;img src="/static/files/2009/03/todotxt-web.png" alt="todotxt-web" title="todotxt-web" width="472" height="605" class="aligncenter size-full wp-image-2225" /&gt;&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s been a fun little project so far: I&amp;#8217;ve learned some jQuery and also a bit about how git&amp;nbsp;works.&lt;/p&gt;
&lt;p&gt;Obviously, this isn&amp;#8217;t for everybody. There are lots of great web-based todo applications like Remember the Milk as well as native Mac apps like &lt;a href="http://culturedcode.com/things/"&gt;Things&lt;/a&gt;, &lt;a href="http://www.omnigroup.com/applications/omnifocus/"&gt;OmniFocus&lt;/a&gt; and &lt;a href="http://www.potionfactory.com/thehitlist/"&gt;The Hit List&lt;/a&gt;. For me, however, this is working pretty&amp;nbsp;well. &lt;/p&gt;
&lt;p&gt;(The readme file on &lt;a href="http://github.com/smajda/todo.txt-web/tree/master"&gt;github&lt;/a&gt; has installation instructions, if you&amp;#8217;re&amp;nbsp;interested.)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Sun, 29 Mar 2009 00:00:00 -0500</pubDate><guid>tag:,2009-03-29:2009/03/29/todotxt-on-the-web/</guid></item><item><title>Exegesis or Caricature?</title><link>/2009/03/26/exegesis-or-caricature/</link><description>&lt;p&gt;&lt;em&gt;Contexts&lt;/em&gt; just published a piece by Alan Wolfe, &lt;a href="http://contexts.org/articles/spring-2009/one-liberalism/"&gt;One Liberalism&lt;/a&gt;, as part of our &amp;#8220;One Thing I Know&amp;#8221; series. It&amp;#8217;s basically a short restatement of the argument in his new book, &lt;em&gt;The Future of Liberalism&lt;/em&gt;, which Wolfe also discussed with us recently on the &lt;a href="http://contexts.org/podcast/2009/02/15/foster-care-liberalism-and-alan-wolfe/"&gt;Contexts Podcast&lt;/a&gt;. (Ok, the Contexts linkfest ends&amp;nbsp;now!)&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m sympathetic to his main argument: that the classical liberalism of Adam Smith favoring the market, and the modern liberalism of Keynes favoring state intervention, are cut from the same cloth and are essentially compatible with one another. Liberalism, Wolfe argues, is about promoting autonomy and equality. In the 18th century that meant challenging feudalism and mercantilism with the free market, while in this century that means challenging contemporary capitalism. Different times mean different ruling orders and diffferent opportunities to advance autonomy and&amp;nbsp;equality. &lt;/p&gt;
&lt;p&gt;I&amp;#8217;m a fan of classical liberalism, though I&amp;#8217;m not a fan of the conservative appropriation of thinkers like Smith and the dogmatic strains of right-wing libertarianism popular in this country. So I&amp;#8217;m predisposed to mostly agree with Wolfe&amp;nbsp;here. &lt;/p&gt;
&lt;p&gt;What bothers me though is Wolfe&amp;#8217;s choice of&amp;nbsp;target:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;#8230;in today’s intellectual climate, the great threat to liberalism comes not from those who assert the priority of God over human creativity but from those who claim culture is merely a byproduct of evolution, something that happens in spite of what individuals want and reflects processes of transmission driven by something like our genes. (Richard Dawkins calls these means of transition “memes”). Evolutionary psychology, sociobiology, and their offshoots such as behavioral economics are anything but breakthrough sciences. They are, in fact, a throw-back to the ideas of such thinkers as Bernard de Mandeville and Thomas Malthus, who questioned liberalism’s understanding of human intentionality from the start and opted instead for one form of determinism or&amp;nbsp;another.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;First, I find it absurd to assert that popular, politically influential religious figures like Pat Robertson and James Dobson are less a threat to liberalism than a few relatively obscure, trendy academic subfields. But aside from that, two things really get me&amp;nbsp;here: &lt;/p&gt;
&lt;p&gt;This is a terrible caricature of the state of these fields. The first clue is the use of the phrase &amp;#8220;sociobiology,&amp;#8221; which is hardly used by anyone anymore. (Well, anyone studying &lt;em&gt;human&lt;/em&gt; evolution at least: there is a journal &lt;em&gt;Sociobiology&lt;/em&gt;, but &lt;a href="http://www.csuchico.edu/biol/Sociobiology/sociobiologycurrent.html"&gt;browse their table of contents&lt;/a&gt; and you won&amp;#8217;t find a thing about humans.) But aside from that, I&amp;#8217;ve read quite a bit of this stuff over the last few years. The notion that either biology or culture are &amp;#8220;deterministic,&amp;#8221; and the idea that they&amp;#8217;re just rehasing old ideas about &amp;#8220;Social Darwinism,&amp;#8221; are two topics virtually everyone in these fields go to great pains to refute. He mentions Dawkins, so let&amp;#8217;s look at &lt;a href="http://www.rubinghscience.org/memetics/dawkinsmemes.html"&gt;the original chapter where Dawkins coins the phrase&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The point I am making now is that, even if we look on the dark side and assume that individual man is fundamentally selfish, our conscious foresight &amp;#8212; our capacity to simulate the future in imagination &amp;#8212; could save us from the worst selfish excesses of the blind replicators.  We have at least the mental equipment to foster our long-term selfish interests rather than merely our short-term selfish interests.  We can see the long-term benefits of participating in a &amp;#8216;conspiracy of doves&amp;#8217;, and we can sit down together to discuss ways of making the conspiracy work.  We have the power to defy the selfish genes of our birth and, if necessary, the selfish memes of our indoctrination.  We can even discuss ways of deliberately cultivating and nurturing pure, disinterested altruism &amp;#8212; something that has no place in nature, something that has never existed before in the whole history of the world.  We are built as gene machines and cultured as meme machines, but we have the power to turn against our own creators.  We, alone on earth, can rebel against the tyranny of the selfish&amp;nbsp;replicators.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This basic rhetorical strategy runs through all of these fields: First, discover the biases humans have as a result of our genetic makeup, our neurological development, our cultural environment or our evolutionary history. Second, use this improved knowledge of ourselves and who we are to take better control of our lives so that we can live the way we want to. (Seems like a pragmatic, &lt;em&gt;liberal&lt;/em&gt; strategy to&amp;nbsp;me.)&lt;/p&gt;
&lt;p&gt;Wolfe summarizes their view as &amp;#8220;culture is merely a byproduct of evolution,&amp;#8221; which may be accurate except for the &amp;#8220;merely.&amp;#8221; What does it mean to say something is &lt;em&gt;merely&lt;/em&gt; the product of evolution? Does this somehow cheapen culture because evolution is, what, really simple and obvious? Of course, humans are not exempt from evolution, and &lt;a href="http://www.amazon.com/Not-Genes-Alone-Transformed-Evolution/dp/0226712842"&gt;culture coevolved along with humanity&lt;/a&gt;. It doesn&amp;#8217;t cheapen culture, make it any less complex or flexible, or any more &amp;#8220;deterministic&amp;#8221; or all-powerful, to say it&amp;#8217;s &amp;#8220;merely&amp;#8221; a product of evolution. And even the most hard-nosed evolutionists argue that an evolutionary view of culture does not lead to &amp;#8220;determinism.&amp;#8221; (For a fun read on the subject: see &lt;a href="http://www.amazon.com/Freedom-Evolves-Daniel-C-Dennett/dp/0670031860"&gt;Dan Dennett&amp;#8217;s Freedom Evolves&lt;/a&gt;. If you only know him from his recent book on religion, his earlier stuff is much more interesting&amp;#8212;and I say that as someone who mostly agrees with him about&amp;nbsp;religion.)&lt;/p&gt;
&lt;p&gt;One response to my complaint here seems pretty obvious: he&amp;#8217;s not talking so much about accurately representing everything scholars in these fields say internally, but about the &lt;em&gt;public impact&lt;/em&gt; of their work. Anytime researchers make a discovery about the connection between our genes or evolutionary history and some particular behavior, character trait or illness, the public impact is for people to think, &amp;#8220;Great, just one less thing we have control over.&amp;#8221; This is, I agree, a big, big&amp;nbsp;problem. &lt;/p&gt;
&lt;p&gt;But wait a minute, let&amp;#8217;s get back to the main argument about liberalism. The problem with the common view of a fractured liberalism is a problem of popular perception, right? The public impact of Adam Smith has been to justify the rise of unfettered corporate capitalism at the expense of equality and autonomy for a great number of people. But in the case of Adam Smith, we&amp;#8217;re being asked to go back to the source and figure out what Smith &lt;em&gt;really meant&lt;/em&gt;. So Adam Smith deserves an exegetical re-reading &lt;em&gt;in spite&lt;/em&gt; of the current popular impact of his ideas. On the other hand, evolutionary psychology and behavioral economics deserve to be evaluated solely on the public caricatures of their work? How do we decide who is deserving of which approach? We either respect scholars in other fields and take their words seriously, or we don&amp;#8217;t. We can&amp;#8217;t pick and choose depending on what fits our&amp;nbsp;argument. &lt;/p&gt;
&lt;p&gt;And briefly, about the gap between the nuances of research on genetics and evolution and the crude popular presentation of these topics seen in the media, I admit there&amp;#8217;s not an easy solution. But before we resort to pretending the nuances don&amp;#8217;t exist at all and rejecting entire subfields for their potential political abuses alone, I&amp;#8217;d like to at least try pushing for better science journalism and improved scientific literacy in the general population&amp;nbsp;first.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Thu, 26 Mar 2009 00:00:00 -0500</pubDate><guid>tag:,2009-03-26:2009/03/26/exegesis-or-caricature/</guid></item><item><title>(Re)learning how to write</title><link>/2009/02/08/relearning-how-to-write/</link><description>&lt;p&gt;I spent the morning at a coffee shop on campus getting some diss writing done. It was about&amp;nbsp;time.&lt;/p&gt;

&lt;p&gt;In November and December, I was actually on a roll. Then the holidays happened and it all fell apart. On two occasions last week I sat down to write and accomplished virtually nothing each time. This is almost always the case after I&amp;#8217;ve taken a break from writing. I&amp;#8217;ve had enough up-and-down cycles like this in my life now to realize why, yet I still seem powerless to overcome the transition back into writing each time. Maybe if I type things up here it&amp;#8217;ll speed the process along next&amp;nbsp;time. &lt;/p&gt;

&lt;p&gt;The biggest mistake I make? I get so stressed about how much I have to accomplish, about how much lost ground I have to make up, that I try to make it all up in one sitting. I procrastinate starting to write again until I have an entire day to dramatically set aside for &amp;#8220;writing time.&amp;#8221; Then I sit down, look over all that I have to do, and then I begin to feel extremely&amp;nbsp;tired. &lt;/p&gt;

&lt;p&gt;However, every time I&amp;#8217;ve managed to overcome this paralysis, and have actually been proud my name is on the results, I&amp;#8217;ve followed a few general rules. There&amp;#8217;s nothing earth-shattering or original in this list&amp;#8212;any how-to guide for writing probably goes over these things&amp;#8212;but I seem to have to relearn them every damn time anyway, so they may be worth&amp;nbsp;sharing.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Warm up&lt;/em&gt;: Do not just sit down at your computer, open up your file and start writing. Get your brain moving first. If you&amp;#8217;re writing an academic paper, for example, read a related article you know you&amp;#8217;ll be referencing in some way. When you stop paying attention to the article and start thinking about your own project, stop reading and start writing (the &amp;#8220;stop reading&amp;#8221; part is important: your goal is &lt;em&gt;not&lt;/em&gt; to read the paper, it&amp;#8217;s to jump-start your&amp;nbsp;writing). &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Outline&lt;/em&gt;: This is probably obvious, but it&amp;#8217;s worth mentioning. If you just start writing at line 1 you&amp;#8217;re likely to wander all over the place. Anyone who&amp;#8217;s ever graded papers can spot a paper that was written without an outline within the first page. Make an outline. Leave yourself lots of room in between points and fill things in as you think of them. Preferably, do this outline in whatever format will be easily accessible to you throughout your week so when you have ideas, you can put them right into the&amp;nbsp;outline. &lt;/p&gt;

&lt;p&gt;I&amp;#8217;ve actually rediscovered the joy of good ol&amp;#8217; pencil and paper for outlines and pre-writing notes. This pains me: the advantages of having everything on a computer are numerous&amp;#8212;not the least of which is that I&amp;#8217;m much less likely to lose something on my computer than I am on my desk or in my backpack&amp;#8212;but I just find the kind of all-over-the-place thinking the brainstorming/outlining phase requires works better with pencil for now. Just a simple text file (my preferred method) forces you to be too linear and organized. The main rule of brainstorming is that you have to write &lt;em&gt;everything&lt;/em&gt; down. If you have to stop and think too much about &lt;em&gt;where&lt;/em&gt; the idea fits into the long nested list you&amp;#8217;ve typed up, it&amp;#8217;s too late and you&amp;#8217;ve forgotten it. So I&amp;#8217;m trying to use paper more these days. I&amp;#8217;ve tried outlining/note-taking software but have been&amp;nbsp;unimpressed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;It&amp;#8217;s okay to write out of order&lt;/em&gt;: This is crucial, but for some reason it goes against my own instincts, and from talking to others over the years, I think it feels unnatural for a lot of people. Especially the analytic, organized kind of people that find themselves in jobs that require lots of writing. Start in the middle. Or the end. Or whatever feels easier at the moment. If you think, &amp;#8220;Ok, now when I get to this point down here I want to say &lt;em&gt;X&lt;/em&gt;,&amp;#8221; just write &lt;em&gt;X&lt;/em&gt;. &lt;em&gt;Right then&lt;/em&gt;. Or at least as much of it as you can until you get stuck. Then move&amp;nbsp;on.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Be modest&lt;/em&gt;: As I hinted above, this is the hardest for me after a long break. It&amp;#8217;s much, much smarter to write a little bit each day for a week than to sit down and try to get it all done in one day. It is &lt;em&gt;so&lt;/em&gt; hard to get into this habit though. You may have been able to crank out those 3-5 papers as an undergraduate in one night, but you simply cannot write a real paper (let alone a dissertation!) this way. If you can get one or two good pages&amp;#8212;or even one or two good paragraphs&amp;#8212;written in one sitting, be happy with that.&amp;nbsp;And&amp;#8230;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Set yourself up&lt;/em&gt;:  When you&amp;#8217;re on a roll, don&amp;#8217;t feel like you have to spend all that positive energy right then and there. In other words, if you&amp;#8217;re feeling good about where you&amp;#8217;re at, don&amp;#8217;t keep writing until you feel confused and lost all over again. Stop when you&amp;#8217;re ahead. Make a few notes about what you want to write next, and then you have a nice place to pick up the next&amp;nbsp;day.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Pick a friendly audience&lt;/em&gt;: One of the best pieces of advice I&amp;#8217;ve read on writing comes from Steven Pinker, who frequently recounts &lt;a href="http://bigthink.com/topics/science-and-technology/ideas/writing-about-science"&gt;the following bit of advice&lt;/a&gt; from one of his early&amp;nbsp;editors:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;When you try to present science to a wide audience, don&amp;#8217;t feel that you’re writing for truck drivers or chicken pluckers. They probably realistically won&amp;#8217;t buy your book. And if you try to aim at everyone, you&amp;#8217;ll end up talking down or condescending. Write for your college roommate, someone who you respect as being as smart as you. They went into a different line of work. They&amp;#8217;re joining the conversation late. They need to be brought up to speed; but assume that your audience is as intellectually engaged and as smart as you&amp;nbsp;are.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This advice is specifically about writing for a general audience, but I find it&amp;#8217;s great advice for any kind of writing with an ambiguous audience, which in a diverse, fractured field like sociology is almost always the case. When you write an academic paper, your goal is to engage with particular &amp;#8220;literatures.&amp;#8221; So, for example, in the case of my dissertation, the section I&amp;#8217;m writing now is primarily geared towards political sociologists and cultural sociologists, but my topic&amp;#8212;open source software&amp;#8212;also overlaps with people who study work, organizations, technology &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; science, and more. This ambiguity of audience gets mixed with the status anxiety that most graduate students feel: not only are you writing a variety of literatures with their own arcane jargon and reference points, but you want &lt;em&gt;all of them&lt;/em&gt; to think you are &lt;em&gt;absolutely brilliant&lt;/em&gt; so they&amp;#8217;ll want to hire you. This tends to stifle one&amp;#8217;s ability to write clearly and easily. I&amp;#8217;ve decided, at least for my project and my personality, it is ultimately smarter to take the advice above and write for the imaginary college roommate and go back later and add in the details any particular audience may want. Ultimately, with a dissertation, this is what you&amp;#8217;ll be doing anyway as you try to break out bits and pieces of the dissertation for publication as articles. (Any previous roommates reading this, feel free to request a copy. I&amp;#8217;ll anxiously await your requests&amp;#8230;&amp;nbsp;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Turn off the internet&lt;/em&gt;: This is pretty simple, but hard to do. Close Gmail (and quite Google Notifier), quit Twitterrific, put the phone away (because, of course, even that has internet access now), etc.  (Here&amp;#8217;s &lt;a href="http://www.locusmag.com/Features/2009/01/cory-doctorow-writing-in-age-of.html"&gt;an article by Cory Doctorow&lt;/a&gt; on &amp;#8220;writing in the age of distraction&amp;#8221; that has a few more tips on minimizing distractions as&amp;nbsp;well.)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ok, now I&amp;#8217;ve just got to remember to re-read this post after my next writing holiday &lt;em&gt;before&lt;/em&gt; wasting several frustrating &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; unproductive&amp;nbsp;days.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Sun, 08 Feb 2009 00:00:00 -0600</pubDate><guid>tag:,2009-02-08:2009/02/08/relearning-how-to-write/</guid></item><item><title>Palatino, URW Palladio &amp; TrueType Fonts</title><link>/2009/01/10/palatino-urw-palladio-truetype-fonts/</link><description>&lt;p&gt;In LaTeX, I like to use the Palatino font package, but I wanted to create a graphic to include in my LaTeX file that also used Palatino so it would match. However, I don&amp;#8217;t have a Palatino regular &lt;span class="caps"&gt;OS&lt;/span&gt; X apps can use, and &amp;#8220;Palatino&amp;#8221; is actually not a free font. ((After some digging: apparently Palatino is included with the iLife apps though, which means you probably have it on any Mac anyway. In this case, I didn&amp;#8217;t have it because I reinstalled the &lt;span class="caps"&gt;OS&lt;/span&gt; but not iLife.)) &amp;#8220;Palatino&amp;#8221; is also not really what you&amp;#8217;re using either in LaTeX: it&amp;#8217;s &amp;#8220;&lt;span class="caps"&gt;URW&lt;/span&gt; Palladio,&amp;#8221; a nearly identical font designed, in fact, by the exact same guy, Hermann Zapf. &lt;span class="caps"&gt;URW&lt;/span&gt; released &lt;span class="caps"&gt;URW&lt;/span&gt; Palladio, &lt;a href="http://www.tug.org/fonts/deutsch-urw.txt"&gt;along with other fonts, under the &lt;span class="caps"&gt;GPL&lt;/span&gt;&lt;/a&gt; in 1996. However, if you just Google for &amp;#8220;&lt;span class="caps"&gt;URW&lt;/span&gt; Palladio,&amp;#8221; you find a bunch of sites trying to sell it to you. After digging around though, I found you can download TrueType versions of the font directly from &lt;a href="http://svn.ghostscript.com/ghostscript/trunk/ghostpdl/urwfonts/"&gt;Ghostscript&amp;#8217;s Subversion Repository&lt;/a&gt;. &lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Sat, 10 Jan 2009 00:00:00 -0600</pubDate><guid>tag:,2009-01-10:2009/01/10/palatino-urw-palladio-truetype-fonts/</guid></item><item><title>Gmail Stickers</title><link>/2009/01/06/gmail-stickers/</link><description>&lt;p&gt;Totally worth the&amp;nbsp;&lt;span class="caps"&gt;SASE&lt;/span&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src="/static/files/2009/01/gmail-stickers.png" alt="gmail-stickers" title="gmail stickers" width="450" height="360" class="aligncenter size-full wp-image-1954" /&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Tue, 06 Jan 2009 00:00:00 -0600</pubDate><guid>tag:,2009-01-06:2009/01/06/gmail-stickers/</guid></item><item><title>iTunes vs. the Album</title><link>/2008/12/15/itunes-vs-the-album/</link><description>&lt;p&gt;&lt;a href="http://cultofmac.com/smashing-pumpkins-itunes-killed-the-album/5947"&gt;Billy Corgan is the latest&lt;/a&gt; to blame those darn kids with their iPods for killing the&amp;nbsp;album:&lt;/p&gt;
&lt;blockquote&gt;
In a Q&amp;A with the Chicago Tribune, Corgan said the tepid reception of last year’s comeback album “Zeitgeist,” makes it the last effort the band will produce in album format.

Chicago Trib: So “Zeitgeist” was the last album?

Corgan: “We’re done with that. There is no point. People don’t even listen to it all. They put it on their iPod, they drag over the two singles and skip over the rest,” said Corgan.

“The listening patterns have changed, so why are we killing ourselves to do albums, to create balance and do the arty track to set up the single? It’s done.”
&lt;/blockquote&gt;

&lt;p&gt;This is supposed to be conventional wisdom, but I don&amp;#8217;t buy it at all. I still listen to complete albums, especially when I get a new one. And while I shuffle sometimes, I don&amp;#8217;t do it all the&amp;nbsp;time. &lt;/p&gt;
&lt;p&gt;It is true that I am an &lt;i&gt;album person&lt;/i&gt; though: my favorite bands are bands that put a lot of thought into putting together a cohesive album that&amp;#8217;s strong from front-to-back. That&amp;#8217;s not true of most pop music, sure, but was it ever? In my experience, there are now (and always have been) music fans who buy complete albums and really get into the experience, and casual music listeners, who have always bought albums just to get to the singles and whose interest in music just floats along with the popular trends. iTunes makes life easier for the latter group&amp;#8230;but as a card-carrying member of the &amp;#8220;Albums First!&amp;#8221; crowd, I think digital music has been pretty good for me,&amp;nbsp;too.&lt;/p&gt;
&lt;p&gt;I didn&amp;#8217;t listen to the Smashing Pumpkins&amp;#8217; &amp;#8220;Zeitgeist,&amp;#8221; but I doubt the switch from CDs to mp3s had anything to do with its relative lack of success. That isn&amp;#8217;t meant to be a dig at the Pumpkins either: every year, far more great albums are released than become big hits, and at the same time a large proportion of what&amp;#8217;s popular know will be nothing but the butt of jokes in 10 years. It&amp;#8217;s just the way it goes, in any&amp;nbsp;era. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; How did I fail to notice the irony that Corgan is blaming the Zeitgeist for the failure of&amp;nbsp;&amp;#8220;Zeitgeist&amp;#8221;?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Mon, 15 Dec 2008 00:00:00 -0600</pubDate><guid>tag:,2008-12-15:2008/12/15/itunes-vs-the-album/</guid></item><item><title>iPhone Education Apps: Free vs. Paid</title><link>/2008/12/02/iphone-education-apps-free-vs-paid/</link><description>&lt;p&gt;Here&amp;#8217;s a &lt;a href="http://radar.oreilly.com/2008/12/iphone-app-store-first-five-mo.html"&gt;breakdown of free vs. paid apps&lt;/a&gt; in Apple&amp;#8217;s App&amp;nbsp;Store:&lt;/p&gt;
&lt;p&gt;&lt;a href="/static/files/2008/12/iphone20.jpg"&gt;&lt;img src="/static/files/2008/12/iphone20-420x338.jpg" alt="" title="Apps Store: Free vs. Paid Apps" width="420" height="338" class="aligncenter size-medium wp-image-1829" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The thing that catches my eye: that the &amp;#8220;Education&amp;#8221; category has the highest proportion of paid&amp;nbsp;apps. &lt;/p&gt;
&lt;p&gt;You might think&amp;#8212;if you had no experience with the educational publishing industry in our country&amp;#8212;that educational applications might be made freely available more frequently than games, financial or photography programs, just to name a&amp;nbsp;few. &lt;/p&gt;
&lt;p&gt;Sadly, anyone that&amp;#8217;s had to pay tuition and/or buy publications like textbooks, journals or (ahem&amp;#8230;) magazines from educational institutions know that&amp;#8217;s not the case: the educational publishing industry somehow manages to rip-off everyone in an age where content is becoming cheaper and cheaper in every other sector, and where you would think the primary creators and consumers of the content (educators and students) would be the most willing to freely share their&amp;nbsp;knowledge. &lt;/p&gt;
&lt;p&gt;To be honest, I can imagine a bunch of explanations, but I&amp;#8217;m not entirely sure why this is the case. This is just one more example of the trend&amp;nbsp;though.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Tue, 02 Dec 2008 00:00:00 -0600</pubDate><guid>tag:,2008-12-02:2008/12/02/iphone-education-apps-free-vs-paid/</guid></item><item><title>Life after the Talcott Parsons Project?</title><link>/2008/11/25/life-after-the-talcott-parsons-project/</link><description>&lt;p&gt;Readers of this blog may be familiar with the great Talcott Parsons Project, widely hailed as The Greatest Sociology Novelty Band Ever, and for whom I play lead guitar. Last night, our drummer Chris and I were contemplating what we could call our band if the &lt;span class="caps"&gt;TPP&lt;/span&gt; were no more (especially if the break-up were ugly, full of lawsuits and hateful name-calling in the press, which&amp;#8212;lets face it&amp;#8212;would be likely). Here are our ideas so&amp;nbsp;far:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Fleetwood&amp;nbsp;Marx&lt;/li&gt;
    &lt;li&gt;Goffman Turner&amp;nbsp;Overdrive&lt;/li&gt;
    &lt;li&gt;Death Cab for&amp;nbsp;Cooley&lt;/li&gt;
    &lt;li&gt;Gans n&amp;#8217; Roses (or, for local flavor, Uggens n&amp;#8217;&amp;nbsp;Roses)&lt;/li&gt;
    &lt;li&gt;System of a&amp;nbsp;Durkheim&lt;/li&gt;
    &lt;li&gt;Foucault&amp;nbsp;Fighters&lt;/li&gt;
    &lt;li&gt;Crosby, Mills and Nash (Crosby, Mills, Nash and&amp;nbsp;Jung)&lt;/li&gt;
    &lt;li&gt;Bill Haley and His&amp;nbsp;Comte&amp;#8217;s&lt;/li&gt;
    &lt;li&gt;Simon and&amp;nbsp;Garfinkel&lt;/li&gt;
    &lt;li&gt;Karl Mannheim&amp;nbsp;Steamroller&lt;/li&gt;
    &lt;li&gt;Bellah and&amp;nbsp;Sebastian&lt;/li&gt;
    &lt;li&gt;Chris and&amp;nbsp;Coser&lt;/li&gt;
    &lt;li&gt;The Mighty Mighty&amp;nbsp;Boss-Tonnies&lt;/li&gt;
    &lt;li&gt;A Tribe Called Joel&amp;nbsp;Best&lt;/li&gt;
    &lt;li&gt;Arendt in&amp;nbsp;Chains&lt;/li&gt;
    &lt;li&gt;Twisted&amp;nbsp;Simmel&lt;/li&gt;
    &lt;li&gt;Better Than&amp;nbsp;Elster&lt;/li&gt;
    &lt;li&gt;and my personal favorite&amp;#8230;The Rolling&amp;nbsp;Stinchcombes&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Tue, 25 Nov 2008 00:00:00 -0600</pubDate><guid>tag:,2008-11-25:2008/11/25/life-after-the-talcott-parsons-project/</guid></item><item><title>Text to iTunes shell script</title><link>/2008/11/21/text-to-itunes-shell-script/</link><description>&lt;p&gt;When I posted my &lt;a href="http://jon.smajda.com/2008/10/19/automator-script-to-send-text-to-itunes-as-speech/"&gt;automator workflow&lt;/a&gt; for turning text to speech and importing the result into iTunes, I admitted I felt like I was giving up a bit by failing to write a shell script to do this and settling for an Automator&amp;nbsp;workflow. &lt;/p&gt;
&lt;p&gt;The primary advantage of a shell script: it makes it easier to ssh into a computer remotely (in my case, my iMac at home, where I keep my iTunes library) and run the script via command line. &lt;i&gt;Yes&lt;/i&gt;, you can use the &lt;tt&gt;automator&lt;/tt&gt; command, but any interactivity with Automator still goes through the &lt;span class="caps"&gt;GUI&lt;/span&gt;, which obviously won&amp;#8217;t work when you&amp;#8217;re connecting remotely to a Mac via the command line. &lt;i&gt;Yes&lt;/i&gt;, you can pass variables into the &lt;tt&gt;automator&lt;/tt&gt; command to address this, but&amp;#8230;look, I just wanted to do it without Automator, ok? And now I&amp;nbsp;have! &lt;/p&gt;
&lt;p&gt;With the exception of &lt;tt&gt;mp4tags&lt;/tt&gt; for setting &lt;span class="caps"&gt;ID3&lt;/span&gt; tags on the mp4 audio files (which you can get &lt;a href="http://mpeg4ip.sourceforge.net"&gt;here&lt;/a&gt; or by installing the macports package &lt;tt&gt;mpeg4ip&lt;/tt&gt;), this script uses only built-in commands available with &lt;span class="caps"&gt;OS&lt;/span&gt; X 10.5. It takes one argument: a plain text file with the text you want to&amp;nbsp;speechify.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/bin/sh&lt;/span&gt;

&lt;span class="c"&gt;# Set a working directory &lt;/span&gt;
&lt;span class="c"&gt;# I use the Trash, but this only makes sense if you have iTunes copying &lt;/span&gt;
&lt;span class="c"&gt;# new files into your iTunes folder for you&lt;/span&gt;
&lt;span class="nv"&gt;workdir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;~/.Trash&amp;quot;&lt;/span&gt;

&lt;span class="c"&gt;### give help for empty command&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -z &lt;span class="s2"&gt;&amp;quot;$1&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;;
    &lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="k"&gt;        &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Speak text file using &amp;#39;say&amp;#39;, set id3 tags and import to iTunes&amp;quot;&lt;/span&gt;
        &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Takes one argument: a plain text file.&amp;quot;&lt;/span&gt;
        &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;&amp;quot;&lt;/span&gt;
        &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;&lt;span class="caps"&gt;USAGE&lt;/span&gt;: &amp;quot;&lt;/span&gt;
        &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;  $0 [file]&amp;quot;&lt;/span&gt;
        &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;&amp;quot;&lt;/span&gt;
        &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;&lt;span class="caps"&gt;DEPENDENCIES&lt;/span&gt;: &amp;quot;&lt;/span&gt;
        &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;  mp4tags command line tool&amp;quot;&lt;/span&gt;
        &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;     - a part of mpeg4ip. Info: http://mpeg4ip.sourceforge.net&amp;quot;&lt;/span&gt;
        &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;     - &amp;#39;sudo port install mpeg4ip&amp;#39; with macports&amp;quot;&lt;/span&gt;
        &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi&lt;/span&gt;

&lt;span class="c"&gt;# id3 variables&lt;/span&gt;
&lt;span class="nv"&gt;artistname&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Text to Speech&amp;quot;&lt;/span&gt;
&lt;span class="nv"&gt;albumname&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Text to Speech&amp;quot;&lt;/span&gt;

&lt;span class="c"&gt;# the name/trackname for the new file is $trackname&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Name the file/track:&amp;#39;&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;trackname

&lt;span class="c"&gt;# the file to convert is $thefile:&lt;/span&gt;
&lt;span class="nv"&gt;thefile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;$@&amp;quot;&lt;/span&gt;

&lt;span class="c"&gt;# the new .m4a and .aiff files&lt;/span&gt;
&lt;span class="nv"&gt;aiffile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;$workdir&amp;quot;&lt;/span&gt;/&lt;span class="s2"&gt;&amp;quot;$trackname&amp;quot;&lt;/span&gt;.aiff
&lt;span class="nv"&gt;m4afile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;$workdir&amp;quot;&lt;/span&gt;/&lt;span class="s2"&gt;&amp;quot;$trackname&amp;quot;&lt;/span&gt;.m4a

&lt;span class="c"&gt;# create aiff&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Creating aiff file...&amp;quot;&lt;/span&gt;
cat &lt;span class="s2"&gt;&amp;quot;$thefile&amp;quot;&lt;/span&gt; | say -o &lt;span class="s2"&gt;&amp;quot;$aiffile&amp;quot;&lt;/span&gt;

&lt;span class="c"&gt;# convert m4a&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Converting to &lt;span class="caps"&gt;AAC&lt;/span&gt; audio...&amp;quot;&lt;/span&gt;
afconvert -v -f &lt;span class="s2"&gt;&amp;quot;mp4f&amp;quot;&lt;/span&gt; -d &lt;span class="s2"&gt;&amp;quot;aac@22050&amp;quot;&lt;/span&gt; -s 0 -q 127 -b 64000 &lt;span class="s2"&gt;&amp;quot;$aiffile&amp;quot;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;$m4afile&amp;quot;&lt;/span&gt;

&lt;span class="c"&gt;# set id3 tags with mp4tags&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Setting id3 tags with mp4tags...&amp;quot;&lt;/span&gt;
mp4tags -s &lt;span class="s2"&gt;&amp;quot;$trackname&amp;quot;&lt;/span&gt; -a &lt;span class="s2"&gt;&amp;quot;$artistname&amp;quot;&lt;/span&gt; -A &lt;span class="s2"&gt;&amp;quot;$albumname&amp;quot;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;$m4afile&amp;quot;&lt;/span&gt;

&lt;span class="c"&gt;# add to itunes&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Adding to iTunes...&amp;quot;&lt;/span&gt;
osascript &lt;span class="s"&gt;&amp;lt;&amp;lt;&lt;span class="caps"&gt;EOT&lt;/span&gt;&lt;/span&gt;
&lt;span class="s"&gt;set foo to posix file &amp;quot;${m4afile}&amp;quot; as alias&lt;/span&gt;
&lt;span class="s"&gt;tell application &amp;quot;iTunes&amp;quot; to add foo&lt;/span&gt;
&lt;span class="s"&gt;&lt;span class="caps"&gt;EOT&lt;/span&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;So my normal use of this: ssh to my iMac that holds my iTunes library, open vim, paste in whatever text I want to turn to speech (make sure you set your terminal to &lt;span class="caps"&gt;UTF&lt;/span&gt;-8 if you have problems with garbled characters) and run &lt;tt&gt;text2itunes mytextfile.txt&lt;/tt&gt;. It will prompt you for a track title and then do its work. &lt;/pre&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Fri, 21 Nov 2008 00:00:00 -0600</pubDate><guid>tag:,2008-11-21:2008/11/21/text-to-itunes-shell-script/</guid></item><item><title>Automator script to send text to iTunes as speech</title><link>/2008/10/19/automator-script-to-send-text-to-itunes-as-speech/</link><description>&lt;p&gt;I&amp;#8217;ve been busy lately, and as with many of you I&amp;#8217;m sure, being busy usually involves long hours staring at a computer screen. This isn&amp;#8217;t so bad really&amp;#8212;I like sitting in front of a computer. My eyes disagree though: I&amp;#8217;m constantly fighting eye strain &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; one of the biggest losers in this battle is my ability to read for fun, especially if it involves reading on a screen. This is one of the reasons I&amp;#8217;ve been so big on podcasts &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; audiobooks lately: they allow me to give my eyes a&amp;nbsp;break.&lt;/p&gt;
&lt;p&gt;Last night I had an idea though: what if I could easily turn all of those long blog posts &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; articles I&amp;#8217;ve been meaning to read into audio files I could listen to like podcasts? Sure, the Text-to-Speech results aren&amp;#8217;t &lt;i&gt;perfect&lt;/i&gt; yet, but I&amp;#8217;ve found it&amp;#8217;s actually perfectly listenable once you get used to&amp;nbsp;it. &lt;/p&gt;
&lt;p&gt;Sure enough, it&amp;#8217;s very easy to &lt;a href="http://www.associatedcontent.com/article/469583/how_to_turn_a_text_document_into_an.html"&gt;write an Automator workflow&lt;/a&gt; that will take your clipboard contents, convert them to speech and then send them to iTunes, ready to be transferred to your iPod. ((Before finding this, I actually tried several shell scripts using the Mac&amp;#8217;s &lt;tt&gt;say&lt;/tt&gt; and &lt;tt&gt;afconvert&lt;/tt&gt; commands with &lt;a href="http://wafflesoftware.net/thisservice/"&gt;ThisService&lt;/a&gt; but the Automator solution is much easier, though I have to say it did feel like giving up a little&amp;nbsp;bit.))&lt;/p&gt;
&lt;p&gt;Anyway, here&amp;#8217;s the workflow I ended up&amp;nbsp;with:&lt;/p&gt;
&lt;p&gt;&lt;img src="/static/files/automator-send-text-to-itunes.png" height="468px" width="480px" alt="Automator Workflow to Send Text to iTunes as Speech" title="Automator Workflow to Send Text to iTunes as Speech" /&gt;&lt;/p&gt;
&lt;p&gt;Just save that as an application, copy the text you want converted and run the&amp;nbsp;application. &lt;/p&gt;
&lt;p&gt;This still isn&amp;#8217;t perfect. I can picture a very cool application that subscribes to &lt;span class="caps"&gt;RSS&lt;/span&gt; feeds and automatically creates podcasts out of each item in each feed. There are services kind of like this for content producers (&lt;a href="http://odiogo.com/"&gt;Odiogo&lt;/a&gt;, for ex), but I&amp;#8217;m not aware of anything like this for content&amp;nbsp;consumers.  &lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Sun, 19 Oct 2008 00:00:00 -0500</pubDate><guid>tag:,2008-10-19:2008/10/19/automator-script-to-send-text-to-itunes-as-speech/</guid></item><item><title>Debate reaction</title><link>/2008/09/27/debate-reaction/</link><description>&lt;p&gt;I have a hard time watching &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; responding to the&amp;nbsp;debates. &lt;/p&gt;
&lt;p&gt;A friend of mine just commented on Facebook that the debates ought to be about informing the public about each candidates policies, not about winning or losing. A sentiment I think most of us share: an honest &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; open discussion of the facts fits the democratic ideal far more than a verbal boxing&amp;nbsp;match.&lt;/p&gt;
&lt;p&gt;Yet I suspect the percentage of viewers who approach the debates with this mindset is incredibly small. On the one hand, you have people who follow politics, are generally well-informed already and probably have already chosen a candidate. I fit in this group. I certainly didn&amp;#8217;t go into the debate last night waiting to hear if McCain could persuade me that his policies are superior to Obama&amp;#8217;s. Short of McCain radically switching his positions in a big debate surprise, that&amp;#8217;s not going to happen. The same is likely true for most strong McCain&amp;nbsp;supporters.&lt;/p&gt;
&lt;p&gt;The debates really aren&amp;#8217;t for people like me then. They&amp;#8217;re for &amp;#8220;independents&amp;#8221; and &amp;#8220;undecideds.&amp;#8221; Now I do not doubt for a minute that there are true moderates out there that are informed and engaged, but are truly undecided for some reason or another. I even know people fitting this description! But this does not describe the majority of undecideds. The majority are undecided because they aren&amp;#8217;t generally interested in politics and are uninformed as a&amp;nbsp;result. &lt;/p&gt;
&lt;p&gt;So when they tune in to a debate, do we expect them to want nuanced policy arguments, full of statistics and historical references? No, and if that did describe the debate, they&amp;#8217;d not be in a very good position to judge the winner anyway. They want the candidate to &lt;i&gt;appear knowledgeable&lt;/i&gt;, but do they really want the 90 minute debate to be an educational experience for themselves? So, as we all know, elections become about vague qualities like &amp;#8220;likability,&amp;#8221; how well a candidate represents abstract values like &amp;#8220;change&amp;#8221; or &amp;#8220;experience,&amp;#8221; and &lt;a href="http://www.huffingtonpost.com/2008/09/26/debate-reviews-go-to-obam_n_129803.html"&gt;post-debate analysis&lt;/a&gt; is about posture, poise, manners,&amp;nbsp;etc. &lt;/p&gt;
&lt;p&gt;This might sound like I&amp;#8217;m dumping on undecideds. I&amp;#8217;m not, so bear with me for a minute. And the reason I&amp;#8217;m not just dumping on undecideds is because the undecideds don&amp;#8217;t run the debates or the campaigns. They&amp;#8217;re not the pundits. They&amp;#8217;re not the majority of the people watching the debates&amp;nbsp;either.&lt;/p&gt;
&lt;p&gt;The reason I have such a problem watching the debate is that nothing hinges on how me, or people like me, respond to the debate. For me to respond to the debate in a meaningful way, I basically have to imagine how I might respond if I were less informed, less opinionated, less, well, &lt;i&gt;decided&lt;/i&gt;. So I too end up dwelling on how McCain&amp;#8217;s lack of eye contact with Obama appeared disrespectful, on whether Obama&amp;#8217;s frequent agreement with McCain made him look weak or reasonable &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; diplomatic. So even for those who do care deeply about the issues, the debates essentially become about the superficial because we too believe that this is where the election is decided (though not for &lt;i&gt;us&lt;/i&gt;, of course, &lt;i&gt;we know better&lt;/i&gt;). &lt;/p&gt;
&lt;p&gt;This, of course, contributes greatly to the problem. It may be that these are the things undecideds gravitate towards. In absence of clear information about the issues, that may even be a rational thing for them to do, at least as a first step. But when the punditry &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; partisans play along, that&amp;#8217;s what truly solidifies the narrative for everybody.  It is, as they say, a self-fulfilling&amp;nbsp;prophesy.&lt;/p&gt;
&lt;p&gt;For example, watch this clip from a Fox News focus group lead by Frank&amp;nbsp;Luntz:&lt;/p&gt;
&lt;p&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/wup4nsIWe8A&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/wup4nsIWe8A&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;These swing voters aren&amp;#8217;t &lt;i&gt;informed&lt;/i&gt; by the debate, rather they are &lt;i&gt;moved&lt;/i&gt; towards one candidate or the other. The method of tracking how well they respond to each candidate? A &amp;#8220;hot-cold&amp;#8221; dial the respondent uses to react to what the candidate says by the second. Praise the troops, you get a rise. Pander to the &amp;#8220;middle class&amp;#8221; or &amp;#8220;Main Street,&amp;#8221; get a&amp;nbsp;rise. &lt;/p&gt;
&lt;p&gt;Now, like I said, it&amp;#8217;s very possible that this is, in fact, the level at which political decisions are made for these voters. But it&amp;#8217;s also possible that by making &lt;i&gt;all of politics&lt;/i&gt; operate at this level, we&amp;#8217;re contributing to the disenchantment with politics we&amp;#8217;re trying to explain, predict and control. It&amp;#8217;s possible politics could be about more than this gut-level superficiality, and it&amp;#8217;s even possible that more people might become engaged in politics if they were asked to raise their game to participate rather than being treated like shallow, uneducated&amp;nbsp;children.&lt;/p&gt;
&lt;p&gt;This, of course, is not limited to debates but to all coverage of politics these days. It&amp;#8217;s all &amp;#8220;meta-coverage.&amp;#8221; If Obama introduces a new policy, the media coverage is not about how the policy works and what it&amp;#8217;s impact will be. Instead it&amp;#8217;s all about how different groups of people will react to the policy and how the policy is an attempt by the Obama campaign to reach certain demographic groups.  Within the ideological groups of liberals or conservatives, there may be vibrant and detailed discussion of the details of this policy, but that&amp;#8217;s not what floats to the surface of the public&amp;nbsp;discourse.  &lt;/p&gt;
&lt;p&gt;Now what did I think of the debate? I thought it was pretty much a draw but I&amp;#8217;m pleasantly surprised to find that most of the early response indicates an Obama&amp;nbsp;win.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Sat, 27 Sep 2008 00:00:00 -0500</pubDate><guid>tag:,2008-09-27:2008/09/27/debate-reaction/</guid></item><item><title>Posthaste WP Plugin</title><link>/2008/09/01/posthaste-wp-plugin/</link><description>&lt;p&gt;&lt;b&gt;Update 12-22-2008:&lt;/b&gt; Ok, posthaste is now &lt;a title="Posthaste plugin in WordPress Plugin Directory" href="http://wordpress.org/extend/plugins/posthaste/"&gt;in the WordPress Plugin directory&lt;/a&gt;. You can also &lt;a href="http://github.com/smajda/posthaste/"&gt;fork it on github&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you have any questions, suggestions or comments, &lt;a href="http://wordpress.org/tags/posthaste?forum_id=10#postform"&gt;leave them there&lt;/a&gt; from now on. I&amp;#8217;ll follow anything posted there and try to respond&amp;nbsp;quickly. &lt;/p&gt;
&lt;p&gt;I&amp;#8217;ll keep this post up, but I don&amp;#8217;t plan on updating it every time I update the plugin. For information about updates, you should follow the &lt;a href="http://wordpress.org/extend/plugins/posthaste/other_notes/"&gt;Release Notes&lt;/a&gt; at&amp;nbsp;wordpress.org. &lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;When reworking the theme for this blog, I decided I wanted to add the Twitter-style quick post box from the &lt;a href="http://wordpress.org/extend/themes/prologue/"&gt;Prologue theme&lt;/a&gt; to my theme. Instead of adding it directly to my theme though, I decided to try to write it as a plugin. Lo and behold, I&amp;nbsp;succeeded:&lt;/p&gt;
&lt;p&gt;&lt;img src="/static/files/posthaste-example.png" height="300px" width="480px" alt="A screenshot of the Posthaste plugin on this blog" title="A screenshot of the Posthaste plugin on this blog" /&gt;&lt;/p&gt;
&lt;p&gt;I don&amp;#8217;t know why&amp;mdash;it&amp;#8217;s not &lt;i&gt;that&lt;/i&gt; much work to use the &lt;span class="caps"&gt;WP&lt;/span&gt; admin backend&amp;mdash;but this seems to make blogging seem much more inviting to me. I basically just took the relevant code from the Prologue theme, modified it a bit (adding a &amp;#8220;Title:&amp;#8221; field, for example) and found the correct &lt;span class="caps"&gt;WP&lt;/span&gt; hooks to put it in Plugin&amp;nbsp;form. &lt;/p&gt;
&lt;p&gt;I&amp;#8217;m actually thinking about releasing it as a real plugin. When I mentioned this to my friend &lt;a href="http://gnomonkey.com"&gt;James&lt;/a&gt;, he recommended the name &amp;#8220;Posthaste.&amp;#8221; James is much better at naming things than me, so I took his&amp;nbsp;recommendation.&lt;/p&gt;
&lt;p&gt;If this sounds interesting to you, you can &lt;a href="http://wordpress.org/extend/plugins/posthaste/"&gt;download it and try it out&lt;/a&gt;. If it seems useful to other people &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; actually works well enough, I may submit it to the &lt;span class="caps"&gt;WP&lt;/span&gt; plugin directory. I tested it with a handful of the most popular themes on the &lt;a href="http://wordpress.org/extend/themes/"&gt;WordPress Theme Directory&lt;/a&gt; and it seemed to work with them&amp;nbsp;all. &lt;/p&gt;
&lt;p&gt;A few&amp;nbsp;notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you leave the &amp;#8220;Title:&amp;#8221; field blank, it takes the first 40 characters of the post content &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; makes that the&amp;nbsp;title.&lt;/li&gt;
&lt;li&gt;If you don&amp;#8217;t select anything in the category dropdown box, it posts to your default category&amp;#8230;&lt;i&gt;unless&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;If you have a category named &amp;#8216;asides&amp;#8217;, it will put posts with empty titles in the &amp;#8216;asides&amp;#8217; category. You can then &lt;a href="http://codex.wordpress.org/Adding_Asides"&gt;style them as asides&lt;/a&gt;, which is what I do on this&amp;nbsp;blog.&lt;/li&gt;
&lt;li&gt;&lt;del datetime="2009-02-10T17:44:12+00:00"&gt;If you want to change any of this behavior, there&amp;#8217;s no options page or anything: you&amp;#8217;ve got to edit the php file.&lt;/del&gt;&lt;b&gt; Version 1.1&lt;/b&gt; now includes the ability to select which fields you want to appear. Go to Settings &gt; Writing &gt; Posthaste Settings (&lt;span class="caps"&gt;WP&lt;/span&gt; 2.7&amp;nbsp;only).&lt;/li&gt;
&lt;li&gt;If you check the &amp;#8220;Draft&amp;#8221; box, your post will be saved as a draft. &lt;b&gt;(New in 1.1)&lt;/b&gt; I got this idea from a &lt;a href="http://wordpress.org/support/topic/229056"&gt;request on the wordpress forums&lt;/a&gt; and it&amp;#8217;s actually very handy: if you have the idea for a post but don&amp;#8217;t want to post right away, the posthaste form is a convenient way to quickly get the post started and then you can polish it up&amp;nbsp;later.&lt;/li&gt;
&lt;li&gt;It only has the most basic &lt;span class="caps"&gt;CSS&lt;/span&gt; applied. To customize it, you can add custom &lt;span class="caps"&gt;CSS&lt;/span&gt; to the &amp;#8216;&lt;tt&gt;styles/local.css&lt;/tt&gt;&amp;#8216;&amp;nbsp;file.&lt;/li&gt;
&lt;li&gt;There&amp;#8217;s an ongoing &lt;a href="http://wordpress.org/support/topic/189905"&gt;problem with Prologue in &lt;span class="caps"&gt;WP&lt;/span&gt; 2.6&lt;/a&gt;. I fixed it, I think, by changing the &lt;tt&gt;auth\_redirect()&lt;/tt&gt; code. If you know more than me about these matters, and my &amp;#8220;fixing it&amp;#8221; this way was a bad idea, please let me know. (This was &lt;a href="http://joseph.randomnetworks.com/archives/2008/07/24/prologue-141/"&gt;supposedly fixed in Prologue 1.4.1&lt;/a&gt;, but I&amp;#8217;m still having the same&amp;nbsp;problem.)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Comments&lt;/h3&gt;
&lt;p&gt;I moved this blog off WordPress and lost the comments. There were several cool tips for hacking the plugin in the comments, so I thought I&amp;#8217;d preserve some of them here. Ideally, many of these will be incorporated into the plugin soon, but in the meantime, I&amp;#8217;ll leave them&amp;nbsp;here.&lt;/p&gt;
&lt;h4&gt;Can you add feature &lt;em&gt;X&lt;/em&gt;?&lt;/h4&gt;
&lt;p&gt;There are a few features I do want to add. In order of likelihood that I&amp;#8217;ll actually add&amp;nbsp;them:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The ability to pick which pages the form appears&amp;nbsp;on&lt;/li&gt;
&lt;li&gt;A quick tags style toolbar to help with editing the&amp;nbsp;&lt;span class="caps"&gt;HTML&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;A media uploader (&lt;a href="http://svn.automattic.com/wpcom-themes/p2/"&gt;the p2 theme&lt;/a&gt; now has this, but it&amp;#8217;s not working properly. Because I&amp;#8217;m basically just stealing from prologue and posthaste anyway with this plugin, I&amp;#8217;ll wait until that&amp;#8217;s working (I&amp;#8217;ll know: I use P2 for a group blog at work) and then take a stab. Have I said thank you to the prologue and p2 developers yet?&amp;nbsp;Thanks!&lt;/li&gt;
&lt;li&gt;a &lt;span class="caps"&gt;WYSIWYG&lt;/span&gt; editor. This really shouldn&amp;#8217;t be hard to add. I&amp;#8217;m pretty sure there are already plugins that even let you add a &lt;span class="caps"&gt;WYSIWYG&lt;/span&gt; editor to arbitrary forms&amp;#8230;but I hate &lt;span class="caps"&gt;WYSIWYG&lt;/span&gt; editors. So I doubt I&amp;#8217;ll do this. Sorry. If someone wants to &lt;a href="http://github.com/smajda/posthaste/"&gt;fork it on github&lt;/a&gt; and submit a patch, I&amp;#8217;d be happy to incorporate it. Same goes for all of the items on this todo list&amp;nbsp;actually.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Two factors are slowing down adding any of these: 1) I&amp;#8217;m not a full-time programmer. Not even really a part-time programmer. This is a hobby for me, so I can&amp;#8217;t guarantee I&amp;#8217;ll get to anything all that&amp;nbsp;soon. &lt;/p&gt;
&lt;p&gt;Also, I should add that I really do want to keep the plugin as simple as possible. If you need a full featured environment, just use the edit page. The point of posthaste is, as the name implies, to make posting as easy and streamlined as possible. And all the &amp;#8220;features&amp;#8221; of the WordPress admin interface is precisely what makes it such a pain to go to just for a quick post. That&amp;#8217;s not to say any of these ideas are bad ideas (a media uploader would just add a single icon, quick tag buttons can look nice enough&amp;#8230;and all of these would be optional anyway), but when requesting new features it&amp;#8217;s good to know where I&amp;#8217;m coming from on&amp;nbsp;this.&lt;/p&gt;
&lt;h4&gt;Can I change the location of the&amp;nbsp;form?&lt;/h4&gt;
&lt;p&gt;This is the most common request and it&amp;#8217;s the first improvement on my todo list. It&amp;#8217;s also very easy to just quickly do yourself if you don&amp;#8217;t mind modifying some&amp;nbsp;php. &lt;/p&gt;
&lt;p&gt;Just find the two locations of &lt;code&gt;is_home()&lt;/code&gt; and change them accordingly. For example, to make the form show up on a specific page, use &lt;code&gt;is_page('pagename')&lt;/code&gt; or on a specific category page, use &lt;code&gt;is_category('7')&lt;/code&gt;. &lt;/p&gt;
&lt;p&gt;Next, you should change the action from &lt;code&gt;bloginfo('url')&lt;/code&gt; to the category of the page you&amp;#8217;re on. Or, really, just making it empty (&amp;#8220;&amp;#8221;) should&amp;nbsp;work. &lt;/p&gt;
&lt;p&gt;Finally, if you want to be redirected back to the page where you submitted the post, you need to change the &lt;code&gt;wp_redirect()&lt;/code&gt; at the very end of the header&amp;nbsp;function.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Mon, 01 Sep 2008 00:00:00 -0500</pubDate><guid>tag:,2008-09-01:2008/09/01/posthaste-wp-plugin/</guid></item><item><title>Why don’t more sociologists blog?</title><link>/2008/08/25/why-dont-more-sociologists-blog/</link><description>&lt;p&gt;&lt;i&gt;Originally posted on &lt;a href="http://contexts.org/contech/"&gt;Contech&lt;/a&gt;, a new sociology of tech blog we&amp;#8217;ve started over at contexts. &lt;a href="http://contexts.org/contech/"&gt;Check it out&lt;/a&gt;.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Since starting Contexts Blogs, I&amp;#8217;ve had the chance to talk to lots of blogging sociologists. I&amp;#8217;ve also had the chance to have a lot of non-blogging sociologists firmly say &amp;#8220;No!&amp;#8221; to my attempts to turn them into blogging sociologists. So over the last year or so I&amp;#8217;ve given a lot of thought to why more sociologists don&amp;#8217;t blog, and of course the related question of what drives those who do. Here&amp;#8217;s my current take on the&amp;nbsp;topic:&lt;/p&gt;
&lt;!--more--&gt;

&lt;p&gt;The most common reason people give for not blogging is that they &amp;#8220;don&amp;#8217;t have time.&amp;#8221; Of course, as is usually the case with this excuse, it&amp;#8217;s not much of a reason. Of course we&amp;#8217;re all pressed for time. Yet most of us manage to do things that are not all-work all-the-time. What you&amp;#8217;re really saying when you say you &amp;#8220;don&amp;#8217;t have time&amp;#8221; is that while there may be aspects of blogging that appeal to you, there are other downsides or barriers to blogging that outweigh the perceived benefit. Not to make it sound all &amp;#8220;rational choice&amp;#8221; or anything either (Hey, I know my audience): I think people get the &lt;i&gt;feeling&lt;/i&gt; they wouldn&amp;#8217;t like blogging (or don&amp;#8217;t like blogging, if they&amp;#8217;ve already dipped their toes in a bit), and when you press people on what it is about blogging that scares them off, it&amp;#8217;s not &amp;#8220;time&amp;#8221; necessarily, but other factors that make them uncomfortable with the&amp;nbsp;idea:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Expertise:&lt;/b&gt; If you look at most &amp;#8220;sociology blogs,&amp;#8221; a good percentage of the posts are not &amp;#8220;academic sociology&amp;#8221; in any way. They&amp;#8217;re bloggers, who happen to be sociologists and sometimes write about sociology, but frequently just blog about their lives, current events, news in the discipline, etc. In other words, many would probably be bloggers if they weren&amp;#8217;t sociologists. ((I know I fit in this group: you&amp;#8217;d be hard-pressed to find a sociology-related post on my personal blog.))  And when they do blog about sociology, the aim isn&amp;#8217;t to do &amp;#8220;public sociology&amp;#8221; really: it&amp;#8217;s insider shop talk &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; if people want to follow along, great. If not, fine. ((Obviously there are very successful counter-examples. Our own Jessie&amp;#8217;s &lt;a href="http://racismreview.com"&gt;RacismReview&lt;/a&gt; is an obvious example&amp;#8230;though Jessie also has several&amp;nbsp;blogs.))&lt;/p&gt;
&lt;p&gt;However, when you tell a sociologist &amp;#8220;Hey, you should blog,&amp;#8221; that&amp;#8217;s not usually what they have in mind. A blog is supposed to be some grand &amp;#8220;public sociology&amp;#8221; project, where you bring your knowledge to the masses. In particular, you bring &lt;i&gt;general&lt;/i&gt; knowledge to the masses. Yet many sociologists are not comfortable speaking in public about anything beyond their tiny niche. This makes &lt;a href="http://contexts.org/contech/2008/04/01/notes-on-from-the-mss-meetings/"&gt;sociologists tough interviews for the media&lt;/a&gt;, and it&amp;#8217;s not ideal for blogging either. If you&amp;#8217;re blogging primarily &lt;i&gt;as a sociologist&lt;/i&gt;, then that can be kind of paralyzing to the extent that you feel you&amp;#8217;re &amp;#8220;speaking for the&amp;nbsp;field.&amp;#8221; &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Audience:&lt;/b&gt; Of course, we &amp;#8220;speak for the field&amp;#8221; all the time. In our teaching and also in our writing: it&amp;#8217;s called a &amp;#8220;literature review.&amp;#8221; Sociologists are very comfortable writing for a small audience they share a lot of common knowldge with. There&amp;#8217;s good &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; bad that comes from this, but when it comes to blogging, the fact that &lt;i&gt;anyone&lt;/i&gt; can read what you write&amp;#8212;and that they might, gasp, &lt;i&gt;misinterpret&lt;/i&gt; something you write&amp;#8212;terrifies some people. The only safe writing is writing where you&amp;#8217;re guaranteed that people reading it will think exactly like you and likely agree with you as a result, right? The fact that a few months of blogging can be worth more than a career&amp;#8217;s worth of academic publishing in your Google search results scares people, too. ((Though more &lt;a href="http://en.wikipedia.org/wiki/Open_access_publishing"&gt;open access publishing&lt;/a&gt; might help with&amp;nbsp;that.)) &lt;/p&gt;
&lt;p&gt;Then there are bloggers. To blog, you have to be comfortable with an unknown audience. Most bloggers I&amp;#8217;ve talked to about this admit they mostly write for themselves. Not because of vanity (well, not &lt;i&gt;only&lt;/i&gt; because of vanity anyway), but because the process of writing is something they enjoy, and if they can find a small community of readers &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; fellow bloggers, it&amp;#8217;s a lot of&amp;nbsp;fun. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Technological:&lt;/b&gt; I&amp;#8217;m a geek, so to me it seems natural that academics, who are, at root, experts in knowledge &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; information, should be attracted to information technology. However, there&amp;#8217;s a strong anti-technology aesthetic in academia. Academics who &amp;#8220;don&amp;#8217;t get computers&amp;#8221; are often proud of this fact, bragging that they still handwrite their notes and papers and prefer the chalkboard to powerpoint or even transparencies. Perhaps this is just a rational response, for an expert to react strongly against the utopian notion that technology is going to let everyone be an expert. Perhaps it&amp;#8217;s just a response to reading student paper after student paper plagiarizing Wikipedia. Whatever the reason, academics are generally hesitant to adopt new technology. Of course there are exceptions, but in general it&amp;#8217;s perfectly acceptable to reject technology and those that are &amp;#8220;early adopters&amp;#8221; are often viewed as naive, frivolous and kind of obnoxious. (And maybe we&amp;nbsp;are.)&lt;/p&gt;
&lt;p&gt;So my point is that asking sociologists to blog is asking them to engage with (potential) audiences they&amp;#8217;re not comfortable with, about a wider range of topics than they&amp;#8217;re used to speaking about in a public &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; authoritative way, using a publishing vehicle towards which they are, at best, unfamiliar and, at worst, cynical &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt;&amp;nbsp;distrustful. &lt;/p&gt;
&lt;p&gt;The other side of the coin is who could &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; should be blogging: people comfortable writing for many audiences; who feel constrained by only ever speaking about their tiny little corner of sociology &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; are both adventurous enough to write about a wide variety of topics yet still articulate, honest &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; humble enough to be clear about when they&amp;#8217;re taking educated guesses, when they are truly representing the state of the research and when they&amp;#8217;re just having fun; and people who see blogging &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; the internet for what they are: potentially powerful tools that can be either good, bad or ugly depending on how they&amp;#8217;re&amp;nbsp;used. &lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Mon, 25 Aug 2008 00:00:00 -0500</pubDate><guid>tag:,2008-08-25:2008/08/25/why-dont-more-sociologists-blog/</guid></item><item><title>Rick &amp; Jar Jar, Revisited</title><link>/2008/07/23/rick-jar-jar-revisited/</link><description>&lt;p&gt;Back in Fall 2001, we studied abroad in Stockholm for a semester. I can&amp;#8217;t remember the reason why, but I received two action figures as presents from two friends of mine: Rick Flair and Jar Jar Binks (from Tony &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Marcus, respectively). Somehow I decided I was going to take them to Europe with us and have them pose for pictures everywhere we travelled. I was cleaning through old files a few weeks back and found the&amp;nbsp;photos:&lt;/p&gt;
&lt;style type='text/css'&gt;
    #gallery-1 {
        margin: auto;
    }
    #gallery-1 .gallery-item {
        float: left;
        margin-top: 10px;
        text-align: center;
        width: 33%;         }
    #gallery-1 img {
        border: 2px solid #cfcfcf;
    }
    #gallery-1 .gallery-caption {
        margin-left: 0;
    }
&lt;/style&gt;

&lt;div id='gallery-1' class='gallery galleryid-1372'&gt;&lt;dl class='gallery-item'&gt;
    &lt;dt class='gallery-icon'&gt;
        &lt;a class="shutterset_1372" href='/static/files/2008/07/athens.jpg' title='athens'&gt;&lt;img width="150" height="150" src="/static/files/2008/07/athens-150x150.jpg" class="attachment-thumbnail" alt="" title="athens" /&gt;&lt;/a&gt;
    &lt;/dt&gt;&lt;/dl&gt;&lt;dl class='gallery-item'&gt;
    &lt;dt class='gallery-icon'&gt;
        &lt;a class="shutterset_1372" href='/static/files/2008/07/berlin-wall.jpg' title='berlin-wall'&gt;&lt;img width="150" height="150" src="/static/files/2008/07/berlin-wall-150x150.jpg" class="attachment-thumbnail" alt="" title="berlin-wall" /&gt;&lt;/a&gt;
    &lt;/dt&gt;&lt;/dl&gt;&lt;dl class='gallery-item'&gt;
    &lt;dt class='gallery-icon'&gt;
        &lt;a class="shutterset_1372" href='/static/files/2008/07/big-ben.jpg' title='big-ben'&gt;&lt;img width="150" height="150" src="/static/files/2008/07/big-ben-150x150.jpg" class="attachment-thumbnail" alt="" title="big-ben" /&gt;&lt;/a&gt;
    &lt;/dt&gt;&lt;/dl&gt;&lt;br style="clear: both" /&gt;&lt;dl class='gallery-item'&gt;
    &lt;dt class='gallery-icon'&gt;
        &lt;a class="shutterset_1372" href='/static/files/2008/07/communist-superheroes.jpg' title='communist-superheroes'&gt;&lt;img width="150" height="150" src="/static/files/2008/07/communist-superheroes-150x150.jpg" class="attachment-thumbnail" alt="" title="communist-superheroes" /&gt;&lt;/a&gt;
    &lt;/dt&gt;&lt;/dl&gt;&lt;dl class='gallery-item'&gt;
    &lt;dt class='gallery-icon'&gt;
        &lt;a class="shutterset_1372" href='/static/files/2008/07/eiffel-tower.jpg' title='eiffel-tower'&gt;&lt;img width="150" height="150" src="/static/files/2008/07/eiffel-tower-150x150.jpg" class="attachment-thumbnail" alt="" title="eiffel-tower" /&gt;&lt;/a&gt;
    &lt;/dt&gt;&lt;/dl&gt;&lt;dl class='gallery-item'&gt;
    &lt;dt class='gallery-icon'&gt;
        &lt;a class="shutterset_1372" href='/static/files/2008/07/louvre.jpg' title='louvre'&gt;&lt;img width="150" height="150" src="/static/files/2008/07/louvre-150x150.jpg" class="attachment-thumbnail" alt="" title="louvre" /&gt;&lt;/a&gt;
    &lt;/dt&gt;&lt;/dl&gt;&lt;br style="clear: both" /&gt;&lt;dl class='gallery-item'&gt;
    &lt;dt class='gallery-icon'&gt;
        &lt;a class="shutterset_1372" href='/static/files/2008/07/parthenon.jpg' title='parthenon'&gt;&lt;img width="150" height="150" src="/static/files/2008/07/parthenon-150x150.jpg" class="attachment-thumbnail" alt="" title="parthenon" /&gt;&lt;/a&gt;
    &lt;/dt&gt;&lt;/dl&gt;&lt;dl class='gallery-item'&gt;
    &lt;dt class='gallery-icon'&gt;
        &lt;a class="shutterset_1372" href='/static/files/2008/07/stockholm-parliament.jpg' title='stockholm-parliament'&gt;&lt;img width="150" height="150" src="/static/files/2008/07/stockholm-parliament-150x150.jpg" class="attachment-thumbnail" alt="" title="stockholm-parliament" /&gt;&lt;/a&gt;
    &lt;/dt&gt;&lt;/dl&gt;
    &lt;br style='clear: both;' /&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Wed, 23 Jul 2008 00:00:00 -0500</pubDate><guid>tag:,2008-07-23:2008/07/23/rick-jar-jar-revisited/</guid></item><item><title>One More Gmail Fanboy</title><link>/2008/07/09/one-more-gmail-fanboy/</link><description>&lt;p&gt;I&amp;#8217;ve been officially using Gmail for all my email for a week now and I must say, I really like it. For awhile now, I&amp;#8217;ve known that email was a real bottleneck for me: going from an email discussion to actually getting something done was not happening as easily as it should, and a recent cleaning of my inbox made me realize how negligent I&amp;#8217;ve become in responding to messages. I know lots of long-time Gmail users who rave about how it works, so I thought I&amp;#8217;d give it a shot. Those long-time Gmail users may find everything in this post old-news, but it&amp;#8217;s still new &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; fun to&amp;nbsp;me.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve actually had Gmail for almost a year now (when I switched smajda.com email hosting over to &lt;a href="http://google.com/a/"&gt;Google Apps&lt;/a&gt;, which btw, if you own your own domain, is a great option.), but I&amp;#8217;ve mostly only used it as an on-the-road access point for my personal email account. I&amp;#8217;ve had two main email accounts for years now: one for school stuff and one for personal stuff. Ever since &lt;span class="caps"&gt;OS&lt;/span&gt; X 10.0, I&amp;#8217;ve used Apple&amp;#8217;s Mail to connect via &lt;span class="caps"&gt;IMAP&lt;/span&gt; to both of them; prior to that I used Eudora. However, while Gmail offers &lt;span class="caps"&gt;IMAP&lt;/span&gt; access, to really take advantage of the way Gmail works, you need to use the Gmail&amp;nbsp;interface.&lt;/p&gt;
&lt;p&gt;The defining features of Gmail are 1) the &amp;#8220;conversation,&amp;#8221; not the individual message, is the key unit of organization, and 2) the use of &amp;#8220;labels&amp;#8221; as opposed to &amp;#8220;folders.&amp;#8221; Both of these design choices are, as far as I know, only available in Gmail and they&amp;#8217;re both outstanding&amp;nbsp;ideas. &lt;/p&gt;
&lt;p&gt;For organization, I&amp;#8217;ve &lt;i&gt;tried&lt;/i&gt; to use folders to keep my email organized, but it hasn&amp;#8217;t worked so well. With folders, messages can only live in one folder at a time. So if I move a conversation about this blog into a folder called &amp;#8220;blog,&amp;#8221; all those individual messages are now &lt;i&gt;only&lt;/i&gt; in that folder. If I get a follow-up rely to one of these messages, that follow-up goes to my inbox, but all previous messages in that thread are hidden away in the folder. The result of this: you only move threads into a folder when you&amp;#8217;re sure the discussion has ended; folders are where conversations go to die. In Gmail, I could label that thread &amp;#8220;blog,&amp;#8221; archive it (which simply removes the &amp;#8220;inbox&amp;#8221; label) and when I get a new message, it pulls the whole conversation back into my inbox. This makes it easier to just &amp;#8220;label and archive&amp;#8221; whenever &lt;i&gt;you&amp;#8217;re&lt;/i&gt; ready, without worrying about whether the thread has run its&amp;nbsp;course.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve found there are basically four things I need to do with any email conversation worth&amp;nbsp;keeping. &lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;b&gt;Archive for future reference:&lt;/b&gt; it either contains information I may need at some point or is just a conversation I&amp;#8217;d like to save. Traditional folders do this just fine, and I&amp;#8217;ve got a bunch of labels set up to organize these emails. Of course, it&amp;#8217;s Gmail so you can always just search all your messages,&amp;nbsp;too.&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;Reply:&lt;/b&gt; I need to reply, not necessarily right away (because I need more time or haven&amp;#8217;t decided what to say), but at some point &lt;i&gt;soon&lt;/i&gt;. What I&amp;#8217;ve traditionally done is to keep these messages in my inbox and either flag them or mark them as unread. The downside to this strategy is that once I&amp;#8217;ve got enough in my inbox that I have to scroll to see new messages, that message is basically lost. So I&amp;#8217;ve bought into the whole &amp;#8220;Inbox Zero&amp;#8221; philosophy: the inbox should be for new messages you haven&amp;#8217;t read yet: that&amp;#8217;s it. And the &amp;#8220;unread&amp;#8221; label should be for messages that are, well, unread; and a simple &amp;#8220;flag&amp;#8221; (or &amp;#8220;star&amp;#8221; in gmail) is just too ambigious. So I&amp;#8217;ve created a label called &amp;#8220;@reply&amp;#8221; (the @ keeps it at the top and, as you&amp;#8217;ll see, groups it together with other &amp;#8220;actionable&amp;#8221; labels). If I need to save a message that needs a reply, I label it @reply and archive&amp;nbsp;it.&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;Follow-up:&lt;/b&gt; This is slightly different than a message that needs a reply: perhaps I&amp;#8217;ve already sent a reply and I&amp;#8217;m waiting on someone else. Here I simply need to mark a conversation as something I need to follow-up on; don&amp;#8217;t let it completely fall off my radar. So I label these &amp;#8220;@followup&amp;#8221; and&amp;nbsp;archive.&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;Todo:&lt;/b&gt; I don&amp;#8217;t need to reply or follow-up necessarily, but I need to do something pertaining to this email: like book my hotel room for &lt;span class="caps"&gt;ASA&lt;/span&gt; even though they&amp;#8217;re almost all booked already and those left are so f%#^ing overpriced it&amp;#8217;s ridiculous&amp;#8230;for example. So &amp;#8220;@todo&amp;#8221; and archive. (One more step: using either the &lt;a href="http://www.rememberthemilk.com/services/gmail/"&gt;Firefox &lt;span class="caps"&gt;RTM&lt;/span&gt; plugin&lt;/a&gt; or the &lt;a href="http://www.rememberthemilk.com/forums/tips/3133/"&gt;handy &lt;span class="caps"&gt;RTM&lt;/span&gt; bookmarklet found here&lt;/a&gt;, I&amp;#8217;ll add this to my todo list as well. Both methods add the &lt;span class="caps"&gt;URL&lt;/span&gt; for that conversation to the &lt;span class="caps"&gt;RTM&lt;/span&gt; task so the two are nicely&amp;nbsp;integrated.)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So the email workflow is now: 1) New messages arrive in the inbox, from there they either get deleted, marked for future finding or flagged with one of the &amp;#8220;action&amp;#8221; labels: @reply, @followup, or @todo. 2) Once I&amp;#8217;ve dealt with the inbox, move on to those three action labels. The new &amp;#8220;Quick Links&amp;#8221; option available through &lt;a href="http://gmailblog.blogspot.com/2008/06/introducing-gmail-labs.html"&gt;Gmail Labs&lt;/a&gt; makes this even easier: I&amp;#8217;ve saved a custom search for &amp;#8220;l:@reply &lt;span class="caps"&gt;OR&lt;/span&gt; l:@followup &lt;span class="caps"&gt;OR&lt;/span&gt; l:@todo&amp;#8221; and called it &amp;#8220;actionable.&amp;#8221; (A term I just love.) So it&amp;#8217;s a two-step process: inbox then actionables. When I&amp;#8217;ve done what I need to do, just remove the &amp;#8220;@&amp;#8221; label and archive. If the other person(s) respond, Gmail pulls the conversation back into my inbox for me.  And because conversations can have multiple labels, I can mix and match all four kinds of labels together: labeling my &amp;#8220;Book &lt;span class="caps"&gt;ASA&lt;/span&gt; Hotel&amp;#8221; conversation with &amp;#8220;@todo&amp;#8221; but also &amp;#8220;soc crap,&amp;#8221; for&amp;nbsp;example.&lt;/p&gt;
&lt;p&gt;There are lots of other little things I really like as well.  For example, say you just sent an email and forgot to add one thing. If you go into your sent mail and reply to the email you just sent, it correctly makes you the sender and the recipient the recipient. In Mail.app, you end up replying to yourself unless you manually switch the addresses. This is a little thing, but it&amp;#8217;s really&amp;nbsp;nice. &lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve also moved both my main email accounts into Gmail: I forwarded my school email to Gmail and can reply to umn.edu emails from my umn.edu account within Gmail. After a long time of keeping the two separate on purpose, I realized the boundaries between school and my personal life are way too porous to actually have the email boundary serve any useful function. I do, however, have Gmail automatically label all umn.edu email with a &amp;#8220;umn.edu&amp;#8221;&amp;nbsp;label.&lt;/p&gt;
&lt;p&gt;There are some things I don&amp;#8217;t like, of course. Contact management sucks, for one thing, but there are about fifty different services &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; software out there in various states of beta for syncing Gmail contacts, so I&amp;#8217;m pretty sure this will be improved soon. (Although it&amp;#8217;d be nice for Gmail to have an option to &lt;i&gt;not&lt;/i&gt; save every email you ever interact with in your Contacts. Or, at least, create a group to differentiate those &lt;i&gt;they&lt;/i&gt; add automatically from those &lt;i&gt;you&lt;/i&gt; add on&amp;nbsp;purpose.) &lt;/p&gt;
&lt;p&gt;Also, for all my love of labels, they could make applying labels easier. Right now you have to use the &amp;#8220;More Actions&amp;#8221; dropdown to apply labels. You &lt;i&gt;can&lt;/i&gt; install the &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/6076"&gt;Better Gmail 2&lt;/a&gt; extension if you&amp;#8217;re using Firefox and get a Quicksilver-like interface for adding labels, but a) I&amp;#8217;m not really thrilled with how that works, and b) I prefer using Gmail in a &lt;a href="http://fluidapp.com"&gt;Fluid Site-Specific Browser&lt;/a&gt; on my Mac. Ideas? Add a little &amp;#8220;+&amp;#8221; icon next to each label in your label list to add that label to the currently selected message. (Kind of like how you can remove labels in conversation view by clicking the &amp;#8220;X&amp;#8221; next to each label name at the to of your&amp;nbsp;conversation.)&lt;/p&gt;
&lt;p&gt;Oh, one more thing: &lt;a href="http://toolbar.google.com/gmail-helper/notifier_mac.html"&gt;Gmail Notifier&lt;/a&gt; + &lt;a href="http://wafflesoftware.net/gmailgrowl/"&gt;Gmail+Growl&lt;/a&gt; = very&amp;nbsp;nice.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Wed, 09 Jul 2008 00:00:00 -0500</pubDate><guid>tag:,2008-07-09:2008/07/09/one-more-gmail-fanboy/</guid></item><item><title>Carlson’s Upgraded Sponsorship</title><link>/2008/06/20/carlsons-upgraded-sponsorship/</link><description>&lt;p&gt;I took a trip through the brand new business school building on campus today, which I didn&amp;#8217;t even realize had opened yet. I decided to take some pictures. (With my Centro, so excuse the relatively poor&amp;nbsp;quality.)&lt;/p&gt;
&lt;p&gt;When I first arrived on campus six years ago, people in the social sciences were shocked at how the (then only, but now first) business school building on campus had begun selling sponsorships of all their classrooms. So students were attending classes in the &amp;#8220;Wells Fargo Classroom&amp;#8221; for example. All the rooms in this first building have signs like&amp;nbsp;this:&lt;/p&gt;
&lt;p&gt;&lt;a href='/static/files/2008/06/photo_062008_006.jpg'&gt;&lt;img src="/static/files/2008/06/photo_062008_006-300x240.jpg" alt="" title="photo_062008_006" width="300" height="240" class="aligncenter size-medium wp-image-1280" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For people in the social sciences &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; humanities this was, of course, a shocking example of the corporatization of higher education.  With this new building, however, they&amp;#8217;re taking the sponsorship to a whole new&amp;nbsp;level:&lt;/p&gt;
&lt;p&gt;&lt;a href='/static/files/2008/06/photo_062008_002.jpg'&gt;&lt;img src="/static/files/2008/06/photo_062008_002-300x240.jpg" alt="" title="photo_062008_002" width="300" height="240" class="aligncenter size-medium wp-image-1276" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Yes, that&amp;#8217;s the 3M&amp;copy; classroom, the General Mills&amp;copy; classroom and the Target&amp;copy; atrium. Giant signs with logos and all. All the classrooms get this treatment. Here are the SuperValu&amp;copy; and the Travelers&amp;copy; classrooms,&amp;nbsp;respectively:&lt;/p&gt;
&lt;p&gt;&lt;a href='/static/files/2008/06/photo_062008_003.jpg'&gt;&lt;img src="/static/files/2008/06/photo_062008_003-300x240.jpg" alt="" title="photo_062008_003" width="300" height="240" class="aligncenter size-medium wp-image-1277" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And, like the first business school building, there&amp;#8217;s massive amounts of open space in the new&amp;nbsp;building:&lt;/p&gt;
&lt;p&gt;&lt;a href='/static/files/2008/06/photo_062008_004.jpg'&gt;&lt;img src="/static/files/2008/06/photo_062008_004-300x240.jpg" alt="" title="photo_062008_004" width="300" height="240" class="aligncenter size-medium wp-image-1278" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I remember when I was a first year grad student, Tim Clark gave us a tour of campus and when we got to the business school he pointed out that you could always tell how much money a school had by how much space they wasted in their building. Here, for comparison, is the largest open space in the sociology&amp;nbsp;department:&lt;/p&gt;
&lt;p&gt;&lt;a href='/static/files/2008/06/photo_062008_007.jpg'&gt;&lt;img src="/static/files/2008/06/photo_062008_007-300x240.jpg" alt="" title="photo_062008_007" width="300" height="240" class="aligncenter size-thumbnail wp-image-1281" /&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Fri, 20 Jun 2008 00:00:00 -0500</pubDate><guid>tag:,2008-06-20:2008/06/20/carlsons-upgraded-sponsorship/</guid></item><item><title>4 or 5 reasons writing in plain text is nice</title><link>/2008/05/09/4-or-5-reasons-writing-in-plain-text-is-nice/</link><description>&lt;p&gt;Demonstrated with LaTeX in &lt;a href="http://code.google.com/p/macvim/"&gt;MacVim&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;center&gt;&lt;img src="/static/files/txtwriting.tex.png" height="560px" width="482px" alt="Four or five advantages of writing in plain text" title="Four or five advantages of writing in plain text" /&gt;&lt;/center&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Fri, 09 May 2008 00:00:00 -0500</pubDate><guid>tag:,2008-05-09:2008/05/09/4-or-5-reasons-writing-in-plain-text-is-nice/</guid></item><item><title>Managing WordPress</title><link>/2008/05/06/managing-wordpress/</link><description>&lt;p&gt;&lt;em&gt;Update:&lt;/em&gt; Since writing this post, WordPress has added a nice, built-in interface for updating both itself and plugins (if they&amp;#8217;re installed from the &lt;a href="http://worpdress.org/extend/plugins/"&gt;official &lt;span class="caps"&gt;WP&lt;/span&gt; directory&lt;/a&gt;). There are also &lt;a href="http://www.ilfilosofo.com/blog/wp-db-backup"&gt;database backup plugins&lt;/a&gt; that apparently work well. I&amp;#8217;ve not tried any of these things, however. I still use this method and it has never failed me. (This blog no longer runs on WordPress, but I do still maintain several WordPress blogs for work and for&amp;nbsp;fun.)&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Since I&amp;#8217;ve been managing a &lt;a href="http://mu.wordpress.org/"&gt;WordPress &lt;span class="caps"&gt;MU&lt;/span&gt;&lt;/a&gt; install for &lt;a href="http://contexts.org/blogs"&gt;Contexts Blogs&lt;/a&gt;, I&amp;#8217;ve picked up a few tips for the best way to manage WordPress. The way 90% of WordPress blogs are installed and managed (maybe more than that) is either 1) downloading the .zip file from wordpress.org or 2) using some sort of installer script through a web host (the one I&amp;#8217;ve used is called &amp;#8220;fantastico&amp;#8221;). The problem with both of these is that upgrades are difficult: web hosts&amp;#8217; scripts don&amp;#8217;t offer upgrades (none that I know of anyway), so manually &lt;span class="caps"&gt;FTP&lt;/span&gt;&amp;#8217;ing into the site and overwriting all the old files with the new ones is the way most people upgrade&amp;#8230;if they upgrade at all. Additionally, one of Wordpress&amp;#8217; strengths is it&amp;#8217;s extensibility: using Plugins, you can do pretty much anything with your site. Again, though, if you don&amp;#8217;t stay on top of upgrading plugins, they may just break when, and if, you upgrade WordPress. Not upgrading is a problem: just follow &lt;a href="http://blogsecurity.net/"&gt;Blogsecurity.net&lt;/a&gt; to see the importance of keeping everything up-to-date. Additionally, most people don&amp;#8217;t have backups of their blog, so if an upgrade does hose their site, they&amp;#8217;re&amp;nbsp;screwed.  &lt;/p&gt;
&lt;p&gt;Fortunately, there&amp;#8217;s a much better way to do it. In fact, from what I can tell, this other option is the way the developers of WordPress do it. Unfortunately, it&amp;#8217;s quite geeky and has a bit of a learning curve. If you have some very basic unix shell skills, though, and develop some good habits about updates &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; plugins, you can make managing WordPress much more manageable. Plus, these are skills that transfer nicely to other tasks: these are good things to know in the world of computers and this is a nice, concrete project to give you an&amp;nbsp;introduction.&lt;/p&gt;
&lt;p&gt;In short, here&amp;#8217;s what you need to&amp;nbsp;do:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Get shell access from your (unix-based) web host. If they won&amp;#8217;t give this to you, get a new web host that doesn&amp;#8217;t&amp;nbsp;suck.&lt;/li&gt;
&lt;li&gt;Use subversion, a version control system, for installing &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; updating&amp;nbsp;Wordpress.&lt;/li&gt;
&lt;li&gt;Use a simple shell script, run nightly as a cron job, to backup your wp files and your&amp;nbsp;database.&lt;/li&gt;
&lt;li&gt;Use an &lt;span class="caps"&gt;RSS&lt;/span&gt; reader to subscribe to feeds for &lt;span class="caps"&gt;WP&lt;/span&gt; &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; all your plugins to keep track of updates. Some plugins even have subversion access as&amp;nbsp;well.&lt;/li&gt;
&lt;/ol&gt;

&lt;!--more--&gt;

&lt;p&gt;&lt;b&gt;1. Shell&amp;nbsp;access&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;If you don&amp;#8217;t know anything about a Unix command line, this will be a huge barrier to using this method. In fact, it is at this point that you may close the browser window and say, &amp;#8220;Forget it - I can&amp;#8217;t believe the WordPress people haven&amp;#8217;t made a better upgrading system yet.&amp;#8221; You&amp;#8217;re probably justified in feeling that way. On the other hand, learning Unix shell basics is a bit like learning basic &lt;span class="caps"&gt;HTML&lt;/span&gt;: no one who interacts with and on the web will ever regret learning &lt;span class="caps"&gt;HTML&lt;/span&gt;. Likewise, no one who does any kind of system administration, especially on remote servers like your web host, ever really regrets learning Unix basics. You may not use them much, and you may not like them&amp;#8212;but they&amp;#8217;re very handy and open a lot of doors to you. There are a lot of ways to learn, such as the fun, and free, online book &lt;a href="http://unixmages.com/"&gt;Unix for the Beginning Mage&lt;/a&gt;. Google around though: there are many&amp;nbsp;more. &lt;/p&gt;
&lt;p&gt;Ok, so either you&amp;#8217;re off to learn some mad Unix skillz, you&amp;#8217;ve got them already or you&amp;#8217;ve left me entirely.&amp;nbsp;Onward&amp;#8230;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2.&amp;nbsp;Subversion&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Subversion is a version control system that programmers use to manage their source code. Fortunately, to use for this situation, you barely need to know any subversion at all: just a few simple commands.  First, navigate to the directory you want to install wordpress in and run this&amp;nbsp;command:&lt;/p&gt;
&lt;blockquote&gt;&lt;tt&gt;$ svn list http://svn.automattic.com/wordpress/tags&lt;/tt&gt;&lt;/blockquote&gt;

&lt;p&gt;That will list all the versions of wordpress. Find the most recent version (as of this writing, 2.5.1) and run&amp;nbsp;this:&lt;/p&gt;
&lt;blockquote&gt;&lt;tt&gt;$ svn checkout http://svn.automattic.com/wordpress/tags/2.5.1 .&lt;/tt&gt;&lt;/blockquote&gt;

&lt;p&gt;This will copy all the files into your current directory. (That&amp;#8217;s why the &amp;#8220;.&amp;#8221; at the end is&amp;nbsp;important.)&lt;/p&gt;
&lt;p&gt;Now in a few months or weeks or days when WordPress gets updated (here we&amp;#8217;ll pretend 2.5.2 is out), all you have to do is &lt;tt&gt;cd&lt;/tt&gt; to your wordpress directory again and issue one command to &amp;#8220;switch&amp;#8221; from the &amp;#8220;2.5.1&amp;#8221; tag to the &amp;#8220;2.5.2&amp;#8221;&amp;nbsp;tag:&lt;/p&gt;
&lt;blockquote&gt;&lt;tt&gt;$ svn switch http://svn.automattic.com/wordpress/tags/2.5.2&lt;/tt&gt;&lt;/blockquote&gt;

&lt;p&gt;After that, just run the upgrade script from your browser at wp-admin/upgrade.php. (You can do this every time, but you&amp;#8217;ll only need to do it if the database version changes: just watch wp-includes/version.php for&amp;nbsp;changes.)&lt;/p&gt;
&lt;p&gt;Really that&amp;#8217;s it. Of course, the output you get from these commands may not mean much to you. To really understand what you&amp;#8217;re doing, just read the first few chapters of &lt;a href="http://svnbook.red-bean.com/"&gt;Version Control with Subversion&lt;/a&gt;, another free online&amp;nbsp;book. &lt;/p&gt;
&lt;p&gt;To get a more detailed introduction to using Wordpress with Subversion, including details on how to &lt;a href="http://codex.wordpress.org/Installing/Updating_WordPress_with_Subversion#Converting_a_.22Traditional.22_WordPress_Blog_to_a_Subversion_Checkout"&gt;turn an existing blog&lt;/a&gt; into a subversion-managed blog, &lt;a href="http://codex.wordpress.org/Installing/Updating_WordPress_with_Subversion"&gt;read the official guide at wordpress.org&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3.&amp;nbsp;Backups&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Ok, so now upgrading WordPress is under control, what about setting up regular backups. The easiest way to do this (assuming, like we have this whole post, that you&amp;#8217;re now comfortable with a Unix command line) is to write a simple shell script that will a) backup your files, and b) backup your database and then schedule it to run daily with cron.&amp;nbsp;So:&lt;/p&gt;
&lt;p&gt;First, &lt;a href="http://gist.github.com/202995"&gt;Here is a shell script&lt;/a&gt; I put together for backing up both your wp files &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; database. Edit all the variables at the top of the script correctly and it should make a timestamped backup archive of all your files &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; database in a backup directory of your choosing.  Rather than overwriting the old backup each night, I have it set to save backups for three nights (so every time you run the script it looks for archives older than three days and removes them). This is an approach that makes sense for me given a) the amount of insurance I want to have in case something goes wrong, b) the storage space I have available to me and the relatively small size of my blog&amp;#8217;s wp-content directory. This may not work as well for&amp;nbsp;you.&lt;/p&gt;
&lt;p&gt;So run the script interactively at the prompt and make sure everything is working and then you can schedule it with cron by typing &lt;tt&gt;crontab -e&lt;/tt&gt; to edit your crontab. If you&amp;#8217;re not familiar with cron, just google &amp;#8220;cron tutorial&amp;#8221; and you&amp;#8217;ll find a million good introductions. Like anything in Unix, scheduling something in cron is just a matter of editing a text file. The challenge is just figuring out the format of the damn text file! Here&amp;#8217;s a&amp;nbsp;sample:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# m h  dom month dow command
00 2 * * * /home/jon/bin/wpbu &gt;&gt; /home/jon/backups/wpbu-log.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;So the first five things in there, &lt;tt&gt;00 2 * * *&lt;/tt&gt;, tell cron when to run (in this case daily at 2am) and the last part is the command to run. So I&amp;#8217;ve saved my backup script to ~/bin and called it wpbu. I also direct the output of the command to a text file. This might explain some of the &lt;tt&gt;echo&lt;/tt&gt; commands in the script now: it makes for an easy to read log file to check and make sure your backup actually&amp;nbsp;worked.&lt;/p&gt;
&lt;p&gt;(So this leaves you with automated nightly updates of your blog, saving three days worth of backups. I also have my home machine ssh into my webhost once a week and grab the most recent backup as well with &lt;a href="/static/files/wpbu2home"&gt;this script&lt;/a&gt;. Just fill in the variables and schedule it in cron. To have it only run on Sundays at 12:00, for example, use &lt;tt&gt;00 12 * * 0&lt;/tt&gt;.)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;4. Keep&amp;nbsp;up-to-date&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The next thing to do is to keep up-to-date on when WordPress is updated (subscribe to the &lt;span class="caps"&gt;RSS&lt;/span&gt; feed for the &lt;a href="http://wordpress.org/development/"&gt;WordPress development blog&lt;/a&gt;) as well as any plugins you may use. But when picking out plugins, there are a few things to look&amp;nbsp;for:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Is it currently up-to-date? If the plugin page says &amp;#8220;Compatible with WordPress 1.5!&amp;#8221; and hasn&amp;#8217;t been updated in a few years, you may want to stay&amp;nbsp;away.&lt;/li&gt;
    &lt;li&gt;How frequently is the plugin updated? If there&amp;#8217;s a long and active changelog, this is a good&amp;nbsp;sign.&lt;/li&gt;
    &lt;li&gt;I guess in 2.5 there is now some sort of built-in plugin upgrade capability. I&amp;#8217;ve not used it yet, but see if it&amp;#8217;s compatible with&amp;nbsp;this.&lt;/li&gt;
    &lt;li&gt;Better yet, now that you&amp;#8217;re comfortable with subversion: some plugins offer subversion checkout. A nice feature. &lt;b&gt;Update:&lt;/b&gt; If your plugin is in the official &lt;a href="http://wordpress.org/extend/plugins/"&gt;WordPress plugin directory&lt;/a&gt; then you can do an &amp;#8216;svn checkout&amp;#8217; of it at &lt;a href="http://svn.wp-plugins.org"&gt;svn.wp-plugins.org&lt;/a&gt;!&lt;/li&gt;
    &lt;li&gt;Follow sites like &lt;a href="http://blogsecurity.net/"&gt;Blog Security&lt;/a&gt; so you&amp;#8217;re aware of any security issues that crop up with whatever version of &lt;span class="caps"&gt;WP&lt;/span&gt; or plugins you are&amp;nbsp;using.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Tue, 06 May 2008 00:00:00 -0500</pubDate><guid>tag:,2008-05-06:2008/05/06/managing-wordpress/</guid></item><item><title>Image Upload Script</title><link>/2008/04/12/image-upload-script/</link><description>&lt;p&gt;The last few times I&amp;#8217;ve put images in my blog posts, I&amp;#8217;ve been annoyed at what a pain it is to download the image (if it&amp;#8217;s online), resize the image, upload the image, write out the img code, etc.  So I decided to write a shell script. In typical Me fashion, it started as a short five line script, but I kept thinking, &amp;#8220;But wouldn&amp;#8217;t it be cool if&amp;#8230;&amp;#8221;, so it grew quite a bit. &lt;a href="http://gist.github.com/203011"&gt;You can get the script here&lt;/a&gt;. It uses some built-in Mac &lt;span class="caps"&gt;OS&lt;/span&gt; X commands (&lt;tt&gt;sips&lt;/tt&gt; for image manipulation and &lt;tt&gt;pbcopy&lt;/tt&gt; to copy stuff to your clipboard), so it&amp;#8217;ll only work in &lt;span class="caps"&gt;OS&lt;/span&gt; X. You&amp;#8217;ll also need ssh access to your web&amp;nbsp;server.&lt;/p&gt;
&lt;p&gt;I called it &amp;#8220;uploadimg,&amp;#8221; but you can rename it to whatever you want. The simplest use is to just give it an image and it will a) make a copy of it to a specified working directory, b) resize the copy if it&amp;#8217;s larger than the maxwidth value (set at the top of the script), b) upload the image to your web server&amp;#8217;s upload directory, and c) copy the &lt;span class="caps"&gt;HTML&lt;/span&gt; code for the image to your clipboard (The script even asks you for an &lt;span class="caps"&gt;ALT&lt;/span&gt; and &lt;span class="caps"&gt;TITLE&lt;/span&gt; value). So, for example, I took a picture in Photo Booth (&amp;#8220;Photo 1.jpg&amp;#8221;) and&amp;nbsp;ran:&lt;/p&gt;
&lt;blockquote&gt;
&lt;tt&gt;uploadimg &amp;#8220;Photo 1.jpg&amp;#8221;&lt;/tt&gt;&lt;/blockquote&gt;

&lt;p&gt;The&amp;nbsp;result:&lt;/p&gt;
&lt;p&gt;&lt;center&gt;&lt;img src="/static/files/chloe-photobooth.jpg" height="375px" width="500px" alt="The Two-Headed Chloe Monster" title="The Two-Headed Chloe Monster" /&gt;&lt;/center&gt;&lt;/p&gt;
&lt;p&gt;So here are a few of the &amp;#8220;But wouldn&amp;#8217;t it be cool if&amp;#8217;s&amp;#8221; I&amp;nbsp;added:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you give it a &lt;span class="caps"&gt;URL&lt;/span&gt; of an image, it&amp;#8217;ll download the image and then go to work on&amp;nbsp;it.&lt;/li&gt;
&lt;li&gt;If you add &lt;tt&gt;&amp;apos;-w &lt;span class="caps"&gt;NUM&lt;/span&gt;&amp;apos;&lt;/tt&gt; (where &lt;span class="caps"&gt;NUM&lt;/span&gt; stands for any number), it&amp;#8217;ll use that value as your default maxwidth&amp;nbsp;value.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So after uploading that last image, I ran this&amp;nbsp;command:&lt;/p&gt;
&lt;blockquote&gt;
&lt;tt&gt;uploadimg -w 200 /static/files/chloe-photobooth.jpg
&lt;/tt&gt;&lt;/blockquote&gt;

&lt;p&gt;Which downloaded the 500px image, resized it to 200px, asked me to rename it, uploaded it to the server, and copied the &lt;span class="caps"&gt;HTML&lt;/span&gt; code for this to my&amp;nbsp;clipboard:&lt;/p&gt;
&lt;p&gt;&lt;center&gt;&lt;img src="/static/files/chloe-photobooth-300.jpg" height="225px"   width="300px" alt="A Slightly Smaller Two-Headed Chloe Monster" title="A Slightly Smaller Two-Headed Chloe Monster" /&gt;&lt;/center&gt;&lt;/p&gt;
&lt;p&gt;And if you just type &lt;tt&gt;uploadimg&lt;/tt&gt; with no arguments, you get some help text describing how to use the&amp;nbsp;script.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Sat, 12 Apr 2008 00:00:00 -0500</pubDate><guid>tag:,2008-04-12:2008/04/12/image-upload-script/</guid></item><item><title>Notes from the MSS Meetings</title><link>/2008/04/01/notes-from-the-mss-meetings/</link><description>&lt;p&gt;I just got back from the &lt;a href="http://themss.org/"&gt;Midwest Sociological Society&lt;/a&gt; meetings in St. Louis this past weekend. The theme of the meetings this year was &amp;#8220;Making Sociology More Public.&amp;#8221; Obviously, this is relevant to what we&amp;#8217;re doing at &lt;i&gt;Contexts&lt;/i&gt;, so I attended several of the sessions on the subject, including an excellent talk by &lt;a href="http://home.uchicago.edu/~mariosmall/"&gt;Mario Luis Small&lt;/a&gt; and a session with reporters from the &lt;a href="http://www.bnd.com/"&gt;Belleville News-Democrat&lt;/a&gt; newspaper, a manager from &lt;a href="http://www.kdhx.org/"&gt;&lt;span class="caps"&gt;KDHX&lt;/span&gt; 88.1 &lt;span class="caps"&gt;FM&lt;/span&gt;&lt;/a&gt; and the news director from News20&amp;nbsp;television. &lt;/p&gt;
&lt;p&gt;This last session was particularly interesting as much of the discussion centered around how, on the one hand, sociology is a broad field where people study almost anything, but, on the other hand, any given sociologist is likely only comfortable speaking authoritatively on a very narrow topic. Additionally, the usual suspects came up in discussions of presenting scholarly research to the public: the media wants short sound bites with strong, unambiguous statements of fact. Yet we have qualifications, caveats, probabilities,&amp;nbsp;etc. &lt;/p&gt;
&lt;p&gt;I tried to pull together a couple of clear lessons from the weekend&amp;#8217;s activities for sociologists who want to have more of a public&amp;nbsp;voice: &lt;/p&gt;
&lt;!--more--&gt;

&lt;ul&gt;
&lt;li&gt;A lot of sociologists wonder why the media doesn&amp;#8217;t contact sociologists more often. Aside from the general haziness about what sociology is, sociologists simply aren&amp;#8217;t good at talking in places where the media can find them. If you want to have a public voice, instead of thinking of the process as &amp;#8220;media contacts you, you speak,&amp;#8221; you should think: &amp;#8220;You speak, media contacts you, you speak some more.&amp;#8221; And I don&amp;#8217;t mean &amp;#8220;you speak at an academic conference&amp;#8221;&amp;mdash;a lot of people were apparently surprised the local media wasn&amp;#8217;t interested in covering our conference! Building a space where sociologists can speak in a way that the media, and the public generally, actually has a chance of hearing them is our job here at &lt;i&gt;Contexts&lt;/i&gt; (and &lt;a href="http://contexts.org/blogs"&gt;Contexts Blogs&lt;/a&gt; in particular), so understanding this is particularly important for&amp;nbsp;us!&lt;/li&gt;
&lt;li&gt;Sociologists need to stop complaining about the media not wanting nuance or complexity. This is true, but psychology and economics are complex too&amp;mdash;they&amp;#8217;re just better at translating. Stop flattering yourself about how complex your wonderful ideas are and learn how to speak clearly &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; concisely about them. Does this come with costs and trade-offs? Yes. Deal with it. Convince people you have something worth saying first, then they&amp;#8217;ll buy your book or take your class and get all the nuance they&amp;nbsp;need.&lt;/li&gt;
&lt;li&gt;Stop going for the media home run! The journalists who spoke to us emphasized that sociologists (and academics generally) can play a valuable role in adding to a story, either by adding some social &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; historical context or by even by influencing the overall direction of the story&amp;mdash;even if they go uncited in the actual article. Too often, we think getting entire stories devoted to our work is the only goal worthy of our time. Of course, that&amp;#8217;s gratifying, but forming long-term relationships that can actually shape the direction of news over time has benefits, too. Of course, as a discipline, we don&amp;#8217;t really reward people for doing this kind of consulting work, so that&amp;#8217;s a big part of the problem,&amp;nbsp;too.&lt;/li&gt;
&lt;li&gt;We need to be more comfortable discussing the state of knowledge in our discipline outside of our own narrow little specialties. If journalists ask us questions outside our specific area of expertise, it makes sense to be nervous. If it&amp;#8217;s easy to refer them to someone down the hall, then by all means, do it. But otherwise, realize that you probably know more (or at least can offer a slightly different perspective) than whoever else they&amp;#8217;re going to talk to if you pass up the opportunity. This is another thing about &lt;i&gt;Contexts&lt;/i&gt; I realized: our effect on the media may be less direct (i.e. journalists avidly reading our magazine) and more indirect: sociologists reading our magazine should have a broader sense of the discipline and be more comfortable relaying, I don&amp;#8217;t know, &lt;a href="http://contexts.org/articles/winter-2008/sampson/"&gt;a fact or two about immigration and crime&lt;/a&gt;, even if that&amp;#8217;s not their specific&amp;nbsp;area.&lt;/li&gt;
&lt;li&gt;Sociology&amp;#8217;s got some internal problems to work through if we really hope to be &amp;#8220;more public.&amp;#8221; We&amp;#8217;re really bad at talking to one another, let alone the public. From the time we enter graduate school, we&amp;#8217;re channeled into specialist niches and socialized to write &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; speak for those specialized &amp;#8220;literatures.&amp;#8221; Addressing the discipline as a whole usually amounts to a token reference to Marx, Weber or Durkheim. This makes sense&amp;mdash;we&amp;#8217;re a broad discipline. But we need to do better. (There is, in my opinion, a subfield that &lt;i&gt;should&lt;/i&gt; fill the role of drawing connections b/w subfields and even between sociology &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; other disciplines&amp;mdash;social theory&amp;mdash;but, alas, it&amp;#8217;s mostly just another niche with its own jargon, networks &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; literatures.) If we just get better at communicating with one another, broad field that we are, that should help a lot with communicating outside of sociology as&amp;nbsp;well.&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Tue, 01 Apr 2008 00:00:00 -0500</pubDate><guid>tag:,2008-04-01:2008/04/01/notes-from-the-mss-meetings/</guid></item><item><title>latexmk</title><link>/2008/03/08/latexmk/</link><description>&lt;p&gt;I write all my papers with LaTeX, and one nice thing about LaTeX is that it takes care of all the formatting and stuff for you: you just focus on writing in plain text and adding the necessary mark-up. My problem, however, is that I&amp;#8217;m just too stubborn for this and usually take each trip into LaTeX-land as an opportunity to tweak away as a way to procrastinate. So this morning when I sat down to work on a memo on my dissertation for my committee, guess what I did? I tweaked LaTeX instead of&amp;nbsp;writing. &lt;/p&gt;
&lt;p&gt;However, I can justify it this time because I actually learned something that&amp;#8217;s going to make the rest of my life with LaTeX &lt;i&gt;that much easier&lt;/i&gt;: &lt;a href="http://www.phys.psu.edu/~collins/software/latexmk-jcc/"&gt;latexmk&lt;/a&gt;. The single biggest pain in using LaTeX (well, aside from remembering weird markup and searching for typos that prevent your file from compiling!) is that you have to run latex manually each time you want to look at the &lt;span class="caps"&gt;PDF&lt;/span&gt; output from your file. Even worse, if you&amp;#8217;re using bibtex citations (which, in academic papers, you are), you have to run latex, then bibtex, then latex again &lt;i&gt;every time&lt;/i&gt;. There are ways to streamline this, but nothing I&amp;#8217;ve found works as well as latexmk. Basically what latexmk does is watch your .tex file for changes and then run whatever needs to be run to update your &lt;span class="caps"&gt;PDF&lt;/span&gt; &lt;i&gt;automatically&lt;/i&gt;. &lt;/p&gt;
&lt;p&gt;So here&amp;#8217;s what this means: I open up my .tex file in any text editor, I start latexmk in a Terminal window, and open the &lt;span class="caps"&gt;PDF&lt;/span&gt; in a &lt;span class="caps"&gt;PDF&lt;/span&gt; viewer (You can use Preview, but &lt;a href="http://skim-app.sourceforge.net/"&gt;Skim&lt;/a&gt; has one big advantage: it can auto-refresh in the background*). Every time I save my .tex file, latexmk automatically runs in the background and Skim automatically updates to display the changes in its window as well. In other words, I never have to leave my text editor and never have manually run latex at all. I just save the file. And with Leopard, since you can scroll a window by just hovering over it (without selecting the app), I can even scroll through the &lt;span class="caps"&gt;PDF&lt;/span&gt; without ever removing focus from the editor window with my .tex&amp;nbsp;file.&lt;/p&gt;
&lt;p&gt;To make all this work on a Mac, do the&amp;nbsp;following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Download and install &lt;a href="http://www.phys.psu.edu/~collins/software/latexmk-jcc/"&gt;latexmk&lt;/a&gt; and follow the unix instructions. (i.e. put latexmk.pl in your $&lt;span class="caps"&gt;PATH&lt;/span&gt; somewhere, latexmk.1 in your&amp;nbsp;$&lt;span class="caps"&gt;MANPATH&lt;/span&gt;.)&lt;/li&gt;
&lt;li&gt;Create a file, ~/.latexmkrc, with the following:
&lt;blockquote&gt;&lt;tt&gt;$pdf_previewer = &amp;#8220;open -a /Applications/Skim.app&amp;#8221;;
$clean_ext = &amp;#8220;paux lox pdfsync out&amp;#8221;;
&lt;/tt&gt;&lt;/blockquote&gt;
(I found this &lt;a href="http://groups.google.com/group/vim_mac/msg/a3b7e0c9e79a818b"&gt;here&lt;/a&gt;.) Obviously, you can substitute any &lt;span class="caps"&gt;PDF&lt;/span&gt;&amp;nbsp;viewer.&lt;/li&gt;
&lt;li&gt;If you&amp;#8217;re always going to use latexmk with pdf files, like me, you can add this to your ~/.bash_profile:
&lt;blockquote&gt;&lt;tt&gt;alias latexmk=&amp;apos;latexmk.pl -pdf -pvc&amp;apos;
&lt;/tt&gt;&lt;/blockquote&gt;
You can always run &amp;#8216;latexmk.pl&amp;#8217; with whatever options you need if you don&amp;#8217;t want&amp;nbsp;these.
&lt;/li&gt;
&lt;li&gt;Then just &lt;tt&gt;cd&lt;/tt&gt; to the directory of your latex file, and run &amp;#8220;mklatex yourfile.tex&amp;#8221;. Just leave it running while you work and it&amp;#8217;ll take care of things automatically. When you&amp;#8217;re done, just hit Ctrl-C to stop&amp;nbsp;it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;* So, in the example above, if you use Preview, you have to select Preview before it updates itself. With Skim, you can just glance over at the window and it will update on its own. To make it do this, just look at the &amp;#8220;Sync&amp;#8221; tab in Skim&amp;#8217;s preferences and set it up for your editor. I use &lt;a href="http://code.google.com/p/macvim/"&gt;MacVim&lt;/a&gt;, so I choose &amp;#8220;Custom&amp;#8221; and put &amp;#8220;mvim&amp;#8221; as the&amp;nbsp;command.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Sat, 08 Mar 2008 00:00:00 -0600</pubDate><guid>tag:,2008-03-08:2008/03/08/latexmk/</guid></item><item><title>Keyboard Control for Mac OS X Windows</title><link>/2007/06/30/keyboard-control-for-mac-os-x-windows/</link><description>&lt;p&gt;Awhile back I blogged about &lt;a href="http://www.macosxhints.com/article.php?story=20050428173653581"&gt;this handy applescript&lt;/a&gt; for maximizing windows vertically in Mac &lt;span class="caps"&gt;OS&lt;/span&gt; X. A few weeks ago I installed Linux on my old G3 iBook (a subject worthy of several posts all its own), and one of the things I really like about Linux is the ability to customize keyboard shortcuts and, in particular, to assign keyboard shortcuts to window manager tasks like moving and resizing windows. I installed &lt;a href="http://www.xubuntu.org/"&gt;Xubuntu&lt;/a&gt; on the iBook, though I have been using the &lt;a href="http://fluxbox.sourceforge.net/"&gt;fluxbox&lt;/a&gt; window manager, which is both lightweight and highly customizable, especially with respect to keyboard commands: you just edit a single text file that contains a list of all of the keyboard combinations and actions associated with them. It&amp;#8217;s great. And since I&amp;#8217;ve spent a good deal of time using these keyboard commands the last few weeks, I really miss them when I&amp;#8217;m in &lt;span class="caps"&gt;OS&lt;/span&gt; X and have to manually drag all my windows around where I want them.  So after googling around for some way of doing this in &lt;span class="caps"&gt;OS&lt;/span&gt; X and coming up mostly empty, I went back to that original maximize vertically script and, lo and behold, it gave me all the applescript knowledge I needed to throw together a set of applescripts (controlled by Quicksilver triggers) to have a great deal of control of windows via keyboard shortcuts in Mac &lt;span class="caps"&gt;OS&lt;/span&gt; X. Here&amp;#8217;s what I have&amp;nbsp;now:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Center window on screen:&amp;nbsp;Cmd-Ctrl-c&lt;/li&gt;
&lt;li&gt;Maximize Windows:
        &lt;ul&gt;
    &lt;li&gt;Maximize Window Vertically:&amp;nbsp;Cmd-Ctrl-m&lt;/li&gt;
    &lt;li&gt;Maximize Window, Full Screen:&amp;nbsp;Cmd-Shift-m&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Move window to screen edges:\*
    &lt;ul&gt;
    &lt;li&gt;Move to left edge:&amp;nbsp;Cmd-Ctrl-h&lt;/li&gt;
    &lt;li&gt;Move to right edge:&amp;nbsp;Cmd-Ctrl-l&lt;/li&gt;
    &lt;li&gt;Move to top edge:&amp;nbsp;Cmd-Ctrl-k&lt;/li&gt;
    &lt;li&gt;Move to bottom edge:&amp;nbsp;Cmd-Ctrl-j&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Move window, 15 pixels at a time:
    &lt;ul&gt;
    &lt;li&gt;Move left:&amp;nbsp;Cmd-Opt-h&lt;/li&gt;
    &lt;li&gt;Move right:&amp;nbsp;Cmd-Opt-l&lt;/li&gt;
    &lt;li&gt;Move up:&amp;nbsp;Cmd-Opt-k&lt;/li&gt;
    &lt;li&gt;Move down:&amp;nbsp;Cmd-Opt-j&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Resize Windows:
    &lt;ul&gt;
    &lt;li&gt;Expand right by 15 px:&amp;nbsp;Cmd-Opt-Ctrl-l&lt;/li&gt;
    &lt;li&gt;Shrink left by 15 px:&amp;nbsp;Cmd-Opt-Ctrl-h&lt;/li&gt;
    &lt;li&gt;Expand down by 15 px:&amp;nbsp;Cmd-Opt-Ctrl-j&lt;/li&gt;
    &lt;li&gt;Shrink up by 15 px:&amp;nbsp;Cmd-Opt-Ctrl-k&lt;/li&gt;
        &lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You&amp;#8217;ve got to be pretty careful to avoid shortcut conflicts obviously, so I avoided the singular Cmd-x combos or even the Cmd-Shift-x combos, and anything with Control by itself is likely taken as well (especially if you take advantage of the &lt;a href="http://www.hcs.harvard.edu/~jrus/Site/System%20Bindings.html"&gt;emacs-style keybindings&lt;/a&gt; in Cocoa apps). The only conflict I know of for sure in this set is Cmd-Opt-H, which is usually &amp;#8220;Hide Others&amp;#8221; in all apps. I fixed this in System Preferences by making Hide Others into Cmd-Opt-Shift-h, but I&amp;#8217;m sure I&amp;#8217;ll discover more as I&amp;nbsp;go.  &lt;/p&gt;
&lt;p&gt;I used h,j,k,l as the direction keys &amp;#8212; an obvious choice to any vi-user that is no doubt mysterious and confusing to anyone else (of course &amp;#8220;l&amp;#8221; stands for right and &amp;#8220;h&amp;#8221; stands for left&amp;#8230;how else would it be?). However, this lets you keep your hands on the home row and, amazingly, these keys seem to be relatively under-used in other &lt;span class="caps"&gt;OS&lt;/span&gt; shortcuts (Compared to their home row neighbors a,s,d,f, for&amp;nbsp;example).  &lt;/p&gt;
&lt;p&gt;This also doesn&amp;#8217;t work in every application &amp;#8212; most unfortunately, it doesn&amp;#8217;t work in Firefox, though it does work in Camino and&amp;nbsp;Safari.&lt;/p&gt;
&lt;p&gt;So how to do it? &lt;a href="/static/files/window_control_applescripts.zip"&gt;Here is a zip file&lt;/a&gt; with all the applescripts you need. In my case, I put them in ~/Library/Scripts/window_control/ (it doesn&amp;#8217;t really matter, but if you put them here they&amp;#8217;ll show up in your &lt;a href="http://www.apple.com/applescript/scriptmenu/"&gt;AppleScript Menu&lt;/a&gt;). &lt;/p&gt;
&lt;p&gt;I set up the triggers in &lt;a href="http://quicksilver.blacktree.com/"&gt;Quicksilver&lt;/a&gt; (which if you&amp;#8217;re not using Quicksilver or &lt;a href="http://www.manytricks.com/butler/"&gt;something like it&lt;/a&gt;&amp;#8230;you should be). If you are using Quicksilver and you aren&amp;#8217;t currently using any Triggers, you can just put the Triggers.plist file I included in the zip archive in ~/Library/Application Support/Quicksilver/. (Then open it up in a text editor and simply do a find-and-replace replacing  &amp;#8220;jon&amp;#8221; with your&amp;nbsp;username.)  &lt;/p&gt;
&lt;p&gt;You may need to tweak things to fit your system. I&amp;#8217;ve got a Macbook with a 1280 x 800 screen and I keep my Dock on the right side, so in your scripts (which unfortunately require setting a screen size manually &amp;#8212; there may be a way around this), you&amp;#8217;ll need to adjust the &lt;i&gt;display_y_size&lt;/i&gt; and &lt;i&gt;display_x_size&lt;/i&gt; variables at the top of the script to reflect your own display size (minus the menu bar and dock). You can use Script Editor.app, located in your /Applications/AppleScript/ folder. Other things to easily tweak: the number of pixels in each resize and move (I picked 15, but if you&amp;#8217;ve got a bigger monitor, you may want to jump more at a time, for example). It&amp;#8217;s also handy to set a low repeat value in Quicksilver for the move and resize actions so you can just hold the keys down for bigger&amp;nbsp;movements. &lt;/p&gt;
&lt;p&gt;*&lt;b&gt;Update, July 6:&lt;/b&gt; I realized that pushing windows to the edges was helpful for big windows (say, browser windows), but for smaller windows (Terminal and Finder windows, for example), it would be more helpful to &amp;#8220;tile&amp;#8221; them: i.e. move them up/down/left/right by the amount of their width. So I added some intelligence to the &amp;#8220;edge&amp;#8221; scripts: if there&amp;#8217;s room, it will move the window one &amp;#8220;tile&amp;#8221; size, but if there&amp;#8217;s not room, it will just move it to the edge.  I updated the scripts in the &lt;a href="/static/files/window_control_applescripts.zip"&gt;zip archive&lt;/a&gt;.  I must say, for not being a very big fan of applescript, this is pretty damn cool.  (Of course, a single text file in your home directory, &lt;a href="http://darkshed.net/static/files/rcs/fluxbox/keys.html"&gt;for example&lt;/a&gt;, is still much more&amp;nbsp;elegant&amp;#8230;)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update #2&lt;/b&gt;: For whatever reason, &lt;a href="http://www.macworld.com/weblogs/macosxhints/2006/10/previewscript/index.php"&gt;Apple hasn&amp;#8217;t enabled Applescript support in Preview.app&lt;/a&gt; by default. To make these work with Preview, you need to do this. Fortunately, it&amp;#8217;s just one command away:
&lt;blockquote&gt;
&lt;tt&gt;defaults write /Applications/Preview.app/Contents/Info NSAppleScriptEnabled -bool &lt;span class="caps"&gt;YES&lt;/span&gt;&lt;/tt&gt;
&lt;/blockquote&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update #3&lt;/b&gt;: If you&amp;#8217;ve run the command in Update #2 on a multi-user Mac, you may have found that after making this change, Preview won&amp;#8217;t open for any other user on the machine. This is because this command changes the permissions on the Info.plist file, making it read/write only for you. The easy way to fix this:
&lt;blockquote&gt;
&lt;tt&gt;chmod +r /Applications/Preview.app/Contents/Info.plist&lt;/tt&gt;
&lt;/blockquote&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Yet another update, 01/15/2009&lt;/b&gt;: I&amp;#8217;m now using &lt;a href="http://www.shadowlab.org/softwares/spark.php"&gt;Spark&lt;/a&gt; for the shortcuts, which works much better than Quicksilver&amp;#8217;s Triggers. (I still love and use Quicksilver for other things, but Spark works better for this.)  Plus, if you like the idea of having this functionality but dislike the limitations or setup headaches, and you don&amp;#8217;t mind paying for software that will give you this ability, check out &lt;a href="http://www.heliumfoot.com/mercurymover/"&gt;MercuryMover&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Two Fixes, 09/20/2009:&lt;/b&gt; I just uploaded &lt;a href="/static/files/window_control_applescripts.zip"&gt;an updated collection of scripts&lt;/a&gt; that works around a &lt;a href="http://openradar.appspot.com/5765608"&gt;stupid bug&lt;/a&gt; in 10.5/10.6’s Terminal.app (figured if 10.6 didn’t fix this, it may never be fixed…) and also includes a &lt;a href="http://daringfireball.net/2006/12/display_size_applescript_the_lazy_way"&gt;handy trick&lt;/a&gt; to get the display size automatically, though it doesn’t work with multiple monitors. Depending on your configuration (i.e. if you’re running Tiger still, don’t use Terminal, or if you use multiple monitors…) you may still want &lt;a href="/static/files/window_control_applescripts_v1.zip"&gt;the old files&lt;/a&gt;.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Sat, 30 Jun 2007 00:00:00 -0500</pubDate><guid>tag:,2007-06-30:2007/06/30/keyboard-control-for-mac-os-x-windows/</guid></item><item><title>Antiword</title><link>/2007/05/23/antiword/</link><description>&lt;p&gt;One of my pet peeves: As a general rule, you should always choose the simplest format possible for your files, especially if you&amp;#8217;re going to be sharing them. So if you just have, say, a list of names, then use plain text. If you want to preserve things like bold and italicized text, use .rtf, and if you need to preserve everything like tables to footnotes, then use the full .doc, or better yet &lt;a href="http://en.wikipedia.org/wiki/OpenDocument"&gt;.odf&lt;/a&gt;, format. If you follow that rule yourself, it probably annoys you that people often send you .doc attachments that contain no information that couldn&amp;#8217;t be stored just as easily in plain text and you have to fire up slow Microsoft Office just to view one silly&amp;nbsp;file. &lt;/p&gt;
&lt;p&gt;For this reason, I&amp;#8217;ve been setting TextEdit to open my Word files by default for awhile, though I&amp;#8217;ve found an even slicker solution: &lt;a href="http://www.winfield.demon.nl/"&gt;Antiword&lt;/a&gt;. It takes a .doc file and turns the content into plain text for your quick viewing pleasure.  If you&amp;#8217;re a command line junky, you can install antiword with &lt;del&gt;&lt;a href="http://finkproject.org/"&gt;fink&lt;/a&gt;&lt;/del&gt; &lt;a href="http://github.com/mxcl/homebrew"&gt;homebrew&lt;/a&gt; and use it like this to quickly view a .doc&amp;nbsp;file:&lt;/p&gt;
&lt;blockquote&gt;
$ antiword somefile.doc | less
&lt;/blockquote&gt;

&lt;p&gt;If you&amp;#8217;re a vim user, you can follow &lt;a href="http://www.vim.org/tips/tip.php?tip_id=790"&gt;this handy hint&lt;/a&gt; to open word documents right into vim like any other file. Very&amp;nbsp;cool.&lt;/p&gt;
&lt;p&gt;For the more &lt;span class="caps"&gt;GUI&lt;/span&gt;-centric, there are several &lt;a href="http://www.winfield.demon.nl/#Mac%20OS%20X"&gt;Mac &lt;span class="caps"&gt;GUI&lt;/span&gt;&amp;#8217;s for Antiword&lt;/a&gt;. &lt;a href="http://www.devon-technologies.com/download/index.html"&gt;AntiWordService&lt;/a&gt;, in particular, looks cool as it lets you open .doc files in any text&amp;nbsp;editor.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Wed, 23 May 2007 00:00:00 -0500</pubDate><guid>tag:,2007-05-23:2007/05/23/antiword/</guid></item><item><title>Grades, Grade Inflation and the Achivement Index</title><link>/2007/05/10/grades-grade-inflation-and-the-achivement-index/</link><description>&lt;p&gt;The University of North Carolina is &lt;a href="http://scienceblogs.com/cognitivedaily/2007/05/a_better_way_to_calculate_gpa.php"&gt;considering the adoption of an &amp;#8220;Achievement Index&amp;#8221;&lt;/a&gt; to supplement/replace the &lt;span class="caps"&gt;GPA&lt;/span&gt;, supposedly to combat &amp;#8220;grade inflation.&amp;#8221;  The Achievement Index works &lt;a href="http://www.iq.harvard.edu/blog/sss/archives/2007/05/optimal_grading.shtml"&gt;like this&lt;/a&gt;:
&lt;blockquote&gt;
The model, which is Bayesian, calculates &amp;#8220;achievement index&amp;#8221; scores for each student as latent variables that best explain the grade cutoffs for each class in the university. As a result, it captures several phenomena: (a) if a class is hard and full of very good students, then a high grade is more indicative of ability (and a low grade less indicative of lack of ability); (b) if a class is easy and full of poor students, then a high grade doesn&amp;#8217;t mean much; (c) if a certain instructor always gives As then the grade isn&amp;#8217;t that meaningful &amp;#8212; though it&amp;#8217;s more meaningful if the only people who take the class in the first place are the extremely bright, hard-working students. Your &amp;#8220;achievement index&amp;#8221; score thus reflects your actual grades as well as the difficulty level of the classes you have chosen.
&lt;/blockquote&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m skeptical such a system would ever be adopted for the simple reason that so few people would actually understand it. I read over the Primer on the Achievement Index (&lt;a href="http://www.unc.edu/faculty/faccoun/reports/2006-07/commrepts/EDPGradingproposal2007.shtml"&gt;available here&lt;/a&gt;) and &lt;i&gt;kind of&lt;/i&gt; understood it, but not very well, and I&amp;#8217;ve taken graduate level courses in statistics (well, okay, statistics &lt;i&gt;for social sciences&lt;/i&gt;&amp;#8230;and I&amp;#8217;m still not very good at it.) My point is that most of the students affected by the change, and probably most of the faculty, would not really &amp;#8220;get it.&amp;#8221; If it&amp;#8217;s mystifying to most people, how much stock will they place in it? (Of course, one response would be to start requiring classes in statistics at the high school level to ensure people would understand it&amp;#8230;a long over-due move if you ask&amp;nbsp;me.)&lt;/p&gt;
&lt;p&gt;Aside from that, however, I do really like one aspect of the &amp;#8220;&lt;span class="caps"&gt;AI&lt;/span&gt;&amp;#8221;: it rewards students who get decent grades in hard classes more than students who get great grades in easy classes. For example, see Figure 4 on page 5 of the &lt;a href="http://www.unc.edu/%7Epcg/grading/AIPrimer.pdf"&gt;Primer&lt;/a&gt; (&lt;span class="caps"&gt;PDF&lt;/span&gt;). A lot of my friends as an undergraduate were in Engineering and they worked &lt;i&gt;way&lt;/i&gt; harder than me to get much lower grades because their classes were much harder and had a much wider grade distribution. Of course, you can say employers understand that when they look at a resume, but still it&amp;#8217;d be better to have some way of officially accounting for that at the University&amp;nbsp;level. &lt;/p&gt;
&lt;p&gt;Additionally, it gets at what grades really should do: account for the variation in student performance. When I grade papers, I find the best method is to read all the papers through once and simply sort them from best to worst. Then I go through again and try to find the cut-offs between papers. Obviously there are formal requirements that have to be met or not met to make a certain grade, but once that&amp;#8217;s done it&amp;#8217;s still surprisingly easy to look at two papers and say, &amp;#8220;I can&amp;#8217;t honestly say paper B deserves the same grade as paper A &amp;#8212; it just wouldn&amp;#8217;t be fair to paper A&amp;#8217;s author.&amp;#8221;  At the U of M we have a plus/minus grading scale, which I like because it makes it easy to sort grades with finer distinction than simply A, B or C (which I had at K-State as an undergrad).  It doesnt solve the problem of grading differences between classes and between majors though, like the &lt;span class="caps"&gt;AI&lt;/span&gt; claims to&amp;nbsp;do.  &lt;/p&gt;
&lt;p&gt;All of these advantages, however, are distinct from the issue of &lt;i&gt;grade inflation&lt;/i&gt;, which is apparently the motivating factor behind adopting the &lt;span class="caps"&gt;AI&lt;/span&gt;. While it&amp;#8217;s conventional wisdom these days that grade inflation is a huge problem, is it really happening?  &lt;a href="http://jeremyfreese.com/docs/FreeseArtisPowell%20-%20ABCs.pdf"&gt;This article&lt;/a&gt; by Freese, Artis and Powell (&lt;a href="http://jeremyfreese.com/"&gt;via Freese&amp;#8217;s website&lt;/a&gt;) argues that most of the concern over grade inflation is based on myths that have little empirical evidence. For example, they find:
&lt;ul&gt;
&lt;li&gt;The average &lt;span class="caps"&gt;GPA&lt;/span&gt; at public universities has actually risen little or not at all in recent&amp;nbsp;decades.&lt;/li&gt;
&lt;li&gt;Elite universities, where grade inflation has gotten the most attention, have also seen a rise in admissions competition and overall student credentials as their admissions process has opened up to a wider range of students than a few decades ago. This could account for the rise in their average&amp;nbsp;GPAs.&lt;/li&gt;
&lt;li&gt;The composition of students at all universities has changed a lot in the past several decades, including more women, Asian Americans and non-traditional students, groups that tend to perform better than average. Rises in overall &lt;span class="caps"&gt;GPA&lt;/span&gt; could be attributed to these demographic&amp;nbsp;changes.&lt;/li&gt;
&lt;li&gt;Greater differentiation in course selection: it&amp;#8217;s easier for students to specialize in the humanities or social sciences and take fewer courses in mathematics and the sciences today. This might mean higher &lt;span class="caps"&gt;GPA&lt;/span&gt;&amp;#8217;s for these &lt;i&gt;majors&lt;/i&gt;, but the grades in those &lt;i&gt;courses&lt;/i&gt; have always been higher, so rising &lt;span class="caps"&gt;GPA&lt;/span&gt;&amp;#8217;s might just reflect changes in the distribution of courses rather than a change in the relative ease of getting an A in any given&amp;nbsp;course.&lt;/li&gt;
&lt;li&gt;The idea that a C is &amp;#8220;average&amp;#8221; is a myth in most university grading systems because at most univerisity&amp;#8217;s a student earning below a 2.0 (which, if C were truly average, would be a large chunk of the student body) are placed on&amp;nbsp;probation.&lt;/li&gt;
&lt;/ul&gt;
There&amp;#8217;s more in the article, which is pretty short and worth a read if you&amp;#8217;re interested in the subject. My point is simply that the current system of academic grades does have problems and could be improved upon, and maybe something like the Achievement Index can help, but drawing on the current panic over grade inflation may not be the most valid way to sell such a&amp;nbsp;change.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Thu, 10 May 2007 00:00:00 -0500</pubDate><guid>tag:,2007-05-10:2007/05/10/grades-grade-inflation-and-the-achivement-index/</guid></item><item><title>TPP</title><link>/2007/04/23/tpp/</link><description>&lt;p&gt;This past weekend our department held our annual &lt;a href="http://www.soc.umn.edu/events/sri/index.html"&gt;Sociological Research Institute&lt;/a&gt;. Kind of an odd name, I know, but basically it&amp;#8217;s an internal conference and banquet. The banquet is usually lots of fun and is the highlight of the weekend. If it were up to me, in fact, the whole event would be renamed the Sociological Research &lt;i&gt;Festival&lt;/i&gt;. &lt;/p&gt;
&lt;p&gt;Anyway, last year a few of us grad students got together for a brief performance as The Talcott Parsons Project (if you don&amp;#8217;t &amp;#8220;get it&amp;#8221;: &lt;a href="http://en.wikipedia.org/wiki/Talcott_Parsons"&gt;one&lt;/a&gt; + &lt;a href="http://en.wikipedia.org/wiki/The_Alan_Parsons_Project"&gt;two&lt;/a&gt;) and this year we returned with a complete&amp;nbsp;setlist:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Top Gun Theme/Danger&amp;nbsp;Zone&lt;/li&gt;
&lt;li&gt;Kick Out the&amp;nbsp;Jams&lt;/li&gt;
&lt;li&gt;Crazy&amp;nbsp;Train&lt;/li&gt;
&lt;li&gt;Enter&amp;nbsp;Sandman&lt;/li&gt;
&lt;li&gt;Bohemian&amp;nbsp;Rhapsody&lt;/li&gt;
&lt;li&gt;Blame it on your lying, cheating&amp;nbsp;heart&lt;/li&gt;
&lt;li&gt;What&amp;#8217;s So Funny &amp;#8216;Bout Peace, Love and&amp;nbsp;Understanding?&lt;/li&gt;
&lt;li&gt;Rockin&amp;#8217; in the Free&amp;nbsp;World&lt;/li&gt;
&lt;li&gt;Hit me with your Best&amp;nbsp;Shot&lt;/li&gt;
&lt;li&gt;Footloose&lt;/li&gt;
&lt;li&gt;We&amp;#8217;re Not Gonna Take&amp;nbsp;It&lt;/li&gt;
&lt;li&gt;Stairway to Heaven&amp;nbsp;(Abridged)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I think just a quick glance at that list will give you a pretty good idea about the mood we were going for. Overall, I think it was a smashing success. Of course, we had a quiet crowd of mild-mannered sociologists, but by the opera section of Bohemian Rhapsody we had them singing along anyway, and we even had a few people dancing by the time Footloose rolled around.  (I think the liquor being served deserves some credit too, though.)  Other highlights included special guest vocals and guitar playing by our department chair, and prolific blogger, &lt;a href="http://chrisuggen.blogspot.com/2007/03/disri.html"&gt;Chris Uggen&lt;/a&gt;.  Of course, there were few technical glitches, but how was I supposed to know that running my guitar across the front of my amp to generate raging feedback during our monstrous Top Gun intro could actually knock the guitar nut loose and throw the whole thing out of&amp;nbsp;tune? &lt;/p&gt;
&lt;p&gt;Now as everyone knows, you can&amp;#8217;t be a real band without t-shirts, so we&amp;#8217;ve even &lt;a href="http://www.cafepress.com/thetpp"&gt;got our very own band t-shirts&lt;/a&gt;.  You know you want&amp;nbsp;one.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Mon, 23 Apr 2007 00:00:00 -0500</pubDate><guid>tag:,2007-04-23:2007/04/23/tpp/</guid></item><item><title>Pretending to be interdisciplinary</title><link>/2007/02/27/pretending-to-be-interdisciplinary/</link><description>&lt;p&gt;So the U of M grad school&amp;#8217;s policy on dissertation committees is this: you need 3 people from inside your own department and then one person from a &amp;#8220;related field.&amp;#8221; This &amp;#8220;related field&amp;#8221; requirement is a &lt;i&gt;huge&lt;/i&gt; headache for many, many graduate&amp;nbsp;students.  &lt;/p&gt;
&lt;p&gt;It sounds like a great idea. Who doesn&amp;#8217;t think that disciplinary boundaries are problematic and that we should strive to cross boundaries and work with those in other areas?  Isn&amp;#8217;t this sort of intellectual diversity just what we need to broaden the horizons of our graduate students? You can totally picture a bunch of administrators sitting around a table getting all excited about what a great idea this in. And in principle, it seems like they&amp;#8217;re&amp;nbsp;right.&lt;/p&gt;
&lt;p&gt;However, in practice, the problems are numerous:
&lt;ul&gt;
&lt;li&gt;Most grad students only take a handful of classes outside their own department. As a result, they simply don&amp;#8217;t know faculty in other departments and those faculty in other departments don&amp;#8217;t know them. Faculty are unlikely to commit to grad students they simply don&amp;#8217;t know anything&amp;nbsp;about.&lt;/li&gt;
&lt;li&gt;Many people end up getting what are basically sociologists working in other departments (American Studies or Political Science, say) to be their &amp;#8220;interdisciplinary&amp;#8221;&amp;nbsp;person.&lt;/li&gt;
&lt;li&gt;There&amp;#8217;s no benefit whatsoever to outside committee members who agree to be on your committee. It&amp;#8217;s simply adding more work and extra time committments to their already busy schedules within their own departments. As a result, grad students rarely benefit all that much from outside faculty who try to minimize investment in their project as much as&amp;nbsp;possible.&lt;/li&gt;
&lt;li&gt;Many grad students end up spending more time and effort finding an outside committee member than they recieve back in benefits from someone who, as I said, has little incentive to really be an active member of their&amp;nbsp;committee.&lt;/li&gt;
&lt;/ul&gt;&lt;/p&gt;
&lt;p&gt;Of course, I wouldn&amp;#8217;t be taking the time to write this if I hadn&amp;#8217;t had my own frustrations with this system. My old outside committee member is on sabbatical and travelling this year, so I&amp;#8217;ve been trying to find a new one. It&amp;#8217;s not gone so well. I&amp;#8217;ve contacted outside people &amp;#8220;just to chat,&amp;#8221; diplomatically avoiding the committee question up front and had them simply reply, &amp;#8220;I cannot commit to any new committees right now.&amp;#8221;  Not even giving me time to ask! What kind of &amp;#8220;interdisciplinary&amp;#8221; system is this where faculty who get contacted by grad students outside their field have to instantly go on the&amp;nbsp;defensive?  &lt;/p&gt;
&lt;p&gt;And it gets better. This morning I persuaded a professor I knew in Political Science to be on my committee, though I can tell he&amp;#8217;s not too excited about it, he&amp;#8217;s basically doing it as a favor. Then, get this, I find out that since my advisor has some affiliation with the History department here, &lt;i&gt;he&lt;/i&gt; can be my &amp;#8220;outside&amp;#8221; person. Now &lt;i&gt;that&lt;/i&gt; is cheating, but apparently it&amp;#8217;s okay with grad school and has been done before. Anyway, I haven&amp;#8217;t decided what I&amp;#8217;m going to do yet &amp;#8212; I&amp;#8217;ve got to talk to my advisor before anything else happens, but I&amp;#8217;m just fed up with this whole&amp;nbsp;process. &lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Tue, 27 Feb 2007 00:00:00 -0600</pubDate><guid>tag:,2007-02-27:2007/02/27/pretending-to-be-interdisciplinary/</guid></item><item><title>Science &amp; Non-Experts</title><link>/2006/11/30/science-non-experts/</link><description>&lt;p&gt;A physics major taking my class pointed me towards an &lt;a href="http://www.slate.com/id/2150974"&gt;article in Slate&lt;/a&gt; on sociologist Harry Collins&amp;#8217; recent experiment to test his knowledge of&amp;nbsp;physics:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In a recent experiment of his design, British sociologist Harry Collins asked a scientist who specializes in gravitational waves to answer seven questions about the physics of these waves. Collins, who has made an amateur study of this field for more than 30 years but has never actually practiced it, also answered the questions himself. Then he submitted both sets of answers to a panel of judges who are themselves gravitational-wave researchers. The judges couldn&amp;#8217;t tell the impostor from one of their own. Collins argues that he is therefore as qualified as anyone to discuss this field, even though he can&amp;#8217;t conduct experiments in&amp;nbsp;it.&lt;/p&gt;
&lt;p&gt;Collins&amp;#8217; feat startled the scientific community. The journal Nature predicted that the experiment would have a broad impact, writing that Collins could help settle the &amp;#8220;science wars of the 1990s,&amp;#8221; &amp;#8220;when sociologists launched what scientists saw as attacks on the very nature of science, and scientists responded in kind,&amp;#8221; accusing the sociologists of misunderstanding science. More generally, it could affect &amp;#8220;the argument about whether an outsider, such as an anthropologist, can properly understand another group, such as a remote rural community.&amp;#8221; With this comment, Nature seemed to be saying that if a sociologist can understand physics, then anyone can understand&amp;nbsp;anything. &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;They go on to compare this to what physicist Alan Sokal did to &lt;i&gt;Social Texts&lt;/i&gt; a decade&amp;nbsp;ago:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[Sokal] is famous for an experiment a decade ago that seemed to demonstrate the &lt;i&gt;futility&lt;/i&gt; of laymen discussing science. In 1996, he tricked the top humanities journal &lt;i&gt;Social Text&lt;/i&gt; into publishing as genuine scholarship a totally nonsensical &lt;a href="http://www.physics.nyu.edu/faculty/sokal/transgress_v2/transgress_v2_singlefile.html"&gt;paper&lt;/a&gt; that celebrated fashionable literary theory and then applied it to all manner of scientific questions. (&amp;#8220;As Lacan suspected, there is an intimate connection between the external structure of the physical world and its inner psychological representation &lt;i&gt;qua&lt;/i&gt; knot theory.&amp;#8221;) Sokal showed that, with a little flattery, laymen could be induced to swallow the most ridiculous of scientific canards&amp;#8212;so why should we value their opinions on science as highly as&amp;nbsp;scientists&amp;#8217;?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Apparently, &lt;a href="http://www.cardiff.ac.uk/schoolsanddivisions/academicschools/socsi/staff/acad/collins/expertise/index.html"&gt;Collins argues in a paper&lt;/a&gt; that his experiment shows that it&amp;#8217;s possible to be an expert in physics without being an expert in mathematics.  He doesn&amp;#8217;t say this to imply math is not a key part of physics (which would be absurd), only that it&amp;#8217;s possible to have a division of labor in physics where some specialize in mathematics and others in things like experiments.  I&amp;#8217;ve got no clue as to that specific point and I haven&amp;#8217;t actually read his paper or anything, but aside from just thinking this is a highly entertaining story, I&amp;#8217;m posting these because of the way annoying it gets linked to the &amp;#8220;science wars.&amp;#8221;  A few&amp;nbsp;points:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The comparison with Sokal is annoying. What Sokal did was totally different.  He generated a paper full of total gibberish* and submitted it to a humanities journal, which accepted it for the same reason it presumably accepts any paper: that it makes a substantial contribution to the field. The fact that it got accepted was an indication &lt;i&gt;not&lt;/i&gt; of the &amp;#8220;futility of laymen discussing science,&amp;#8221; but of the shoddy quality of work that goes on in the humanities. The editors and readers of &lt;i&gt;Social Texts&lt;/i&gt;&amp;#8230;not quite &amp;#8220;laymen.&amp;#8221; They represent a layman&amp;#8217;s perspective on physics in the same way the camp leaders in &lt;i&gt;Jesus Camp&lt;/i&gt; could be said to represent a lay audience towards evolution: ignorant, but minds pretty much already made&amp;nbsp;up.&lt;/li&gt;
&lt;li&gt;Additionally, Collins spent &lt;i&gt;30 years&lt;/i&gt; studying gravitational waves&amp;#8230;as a non-expert, yes, but still reading what experts had to say on the topic. While perhaps not a full-fledged expert, this hardly makes him a &amp;#8220;layman.&amp;#8221; Sokal, again, just made shit up. The fact that Collins was able to become knowledgeable about this subject&amp;#8212;despite his non-expert status&amp;#8212;is a &lt;i&gt;testament&lt;/i&gt; to the scientific ideal of presenting empirical evidence and logical argument in a clear, transparent manner. His success doesn&amp;#8217;t show that &amp;#8220;anyone can understand anything.&amp;#8221; It only shows that an intelligent person who devotes decades to learning a science can, sometimes, gain expert-level knowledge about at least part of the field &lt;i&gt;even in the absence&lt;/i&gt; of formal membership and immersion in that fields institutional structure. This is a compliment not to Collins&amp;#8217; brilliance, but to science itself. So the PoMo people, who define science purely as &amp;#8216;just another institution&amp;#8217; might try to find evidence in Collins&amp;#8217; experiment to show that the formal trappings of science are somehow unnecessary to gain expert knowledge (from the little bit I&amp;#8217;ve read, I don&amp;#8217;t think Collins is making such a silly point at all). They&amp;#8217;ll miss the fact, of course, that Collins was only able to gain the expertise he did gain by drawing on the products of scientific institutions. However, this still says nothing about&amp;nbsp;&amp;#8220;laymen.&amp;#8221;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;* The same physics student in my class pointed me towards a hilarious &lt;a href="http://pdos.csail.mit.edu/scigen/"&gt;Computer Science Paper Generator&lt;/a&gt; that tries to pull an automated Sokal on computer science. If someone hasn&amp;#8217;t done this already, someone seriously needs to make one of these for another &lt;span class="caps"&gt;CS&lt;/span&gt;: Cultural Studies. Or even sociology.  It could be&amp;nbsp;done. &lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Thu, 30 Nov 2006 00:00:00 -0600</pubDate><guid>tag:,2006-11-30:2006/11/30/science-non-experts/</guid></item><item><title>SOAD Syndrome</title><link>/2006/11/14/soad-syndrome/</link><description>&lt;p&gt;So I know I&amp;#8217;m like a year behind on this, but I just got System of a Down&amp;#8217;s quasi-double album&amp;nbsp;Mesmerize/Hypnotize.  &lt;/p&gt;
&lt;p&gt;On three separate occasions in the past, I&amp;#8217;ve gone through the exact same cycle with this band: 1) get new album, 2) first listen: Eh, not so great&amp;#8230;kinda weird. 3) 2 or 3 listens later: this is awesome!  4) a week or so later: jeez, I can&amp;#8217;t listen to this&amp;nbsp;anymore.  &lt;/p&gt;
&lt;p&gt;I&amp;#8217;m in phase 3 right now.  I can totally understand not liking this band&amp;#8217;s music, but I love how creative it is. I&amp;#8217;ve always liked music that&amp;#8217;s both funny and serious at the same time, and it&amp;#8217;s very hard to pull that&amp;nbsp;off. &lt;/p&gt;
&lt;p&gt;The thing with System of a Down is that their music is so off-the-wall that it&amp;#8217;s hard to listen to other music right next to it.  They&amp;#8217;re not really a good shuffle band, in other words.  Other music &amp;#8212; with it&amp;#8217;s steady tempo, monotonous vocals, etc. &amp;#8212; just clashes too much with &lt;span class="caps"&gt;SOAD&lt;/span&gt;.  This is why I have to listen to them in phases: get new disc, get in the mood, wear it out for a week or so, put it away until the next cd comes&amp;nbsp;out.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Tue, 14 Nov 2006 00:00:00 -0600</pubDate><guid>tag:,2006-11-14:2006/11/14/soad-syndrome/</guid></item><item><title>Pinker and Lakoff</title><link>/2006/10/28/pinker-and-lakoff/</link><description>&lt;p&gt;A few years back, I bought a copy of George Lakoff and Mark Johnson&amp;#8217;s &lt;i&gt;Metaphors We Live By&lt;/i&gt;.  At the same time, coincidentally, I was reading Steven Pinker&amp;#8217;s &lt;i&gt;The Blank Slate&lt;/i&gt;.  I enjoyed both books immensely and both encouraged me to pursue the relevance of research in cognitive science and biology for sociology.  Both helped kick start the most happy time of my time as a sociology graduate student: a period of about a year where I barely read any sociology! They both dealt with the implications research in biology and cognitive science had for the social sciences, and did so in a very &amp;#8220;big picture&amp;#8221; way that appealed to&amp;nbsp;me.&lt;/p&gt;
&lt;p&gt;However, Pinker&amp;#8217;s book had one thing Lakoff&amp;#8217;s didn&amp;#8217;t have: citations.  Lots of them. So I followed the footnotes in &lt;i&gt;The Blank Slate&lt;/i&gt; and I found a huge, diverse world of fascinating stuff - some of it agreeing, and much of disagreeing, with Pinker&amp;#8217;s case.  Reading Lakoff&amp;#8217;s book, however, gave the impression that you were reading the work of a man who had stumbled upon brilliant ideas for the first time ever in history.  I went on to read Lakoff &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Johnson&amp;#8217;s follow-up, &lt;i&gt;Philosophy in the Flesh&lt;/i&gt;, which was accurately described in a review I read as &amp;#8220;a small important book inside a big self-important book.&amp;#8221; Lakoff&amp;#8217;s work is interesting - but his claims are so far-reaching and his citation so non-existent that I basically set it all aside with a big question mark.  In contrast, Pinker&amp;#8217;s book was a helpful starting point for entering into a new field of research. In the past few years Lakoff&amp;#8217;s become quite the &amp;#8220;progressive&amp;#8221; guru, and whenver I hear/read him I like about half of what he has to say. I &lt;i&gt;usually&lt;/i&gt; end up defending him against critics though b/c most of the criticisms you hear of him sort of miss the point: &amp;#8220;Oh, Lakoff says it&amp;#8217;s just all about words and not about policy or&amp;nbsp;facts.&amp;#8221;  &lt;/p&gt;
&lt;p&gt;So, this is a long-winded way of saying it was refreshing to find a review of Lakoff&amp;#8217;s newest book, &lt;i&gt;Whose Freedom?&lt;/i&gt;, by someone who &lt;i&gt;does&lt;/i&gt; get the cognitive science, Steven Pinker, who calls him out on the lack of citation and&amp;nbsp;evidence:&lt;/p&gt;
&lt;blockquote&gt;
Though it contains messianic claims about everything from epistemology to political tactics, the book has no footnotes or references (just a generic reading list), and cites no studies from political science or economics, and barely mentions linguistics. Its use of cognitive neuroscience goes way beyond any consensus within that field, and its analysis of political ideologies is skewed by the author&amp;#8217;s own politics and limited by his disregard of centuries of prior thinking on the subject. And Lakoff&amp;#8217;s cartoonish depiction of progressives as saintly sophisticates and conservatives as evil morons fails on both intellectual and tactical grounds.
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="http://pinker.wjh.harvard.edu/articles/media/2006_09_30_thenewrepublic.html"&gt;Here&amp;#8217;s the link&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And there&amp;#8217;s more: a little debate ensures that I have no time to write about: &lt;a href="http://www.tnr.com/docprint.mhtml?i=w061016&amp;s=lakoff101606"&gt;Lakoff replies&lt;/a&gt; and then &lt;a href="http://www.tnr.com/docprint.mhtml?i=w061016&amp;s=pinker101906"&gt;Pinker replies to Lakoff&amp;#8217;s reply&lt;/a&gt;.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Sat, 28 Oct 2006 00:00:00 -0500</pubDate><guid>tag:,2006-10-28:2006/10/28/pinker-and-lakoff/</guid></item><item><title>The Joy of TeX</title><link>/2006/10/06/the-joy-of-tex/</link><description>&lt;p&gt;A few months ago, after growing fed-up with the never-ending search for a worthwhile word processor, I took the &lt;a href="http://en.wikipedia.org/wiki/LaTeX"&gt;LaTeX&lt;/a&gt; plunge.  LaTeX (pronounced Lay-Tech; the X is a chi) works basically like &lt;span class="caps"&gt;HTML&lt;/span&gt; and &lt;span class="caps"&gt;CSS&lt;/span&gt; work only the result is papers and not websites.  What&amp;#8217;s great is that you can do all your writing in plain text files, and just like how you use special &lt;span class="caps"&gt;HTML&lt;/span&gt; tags to markup your document structure in &lt;span class="caps"&gt;HTML&lt;/span&gt;, you use LaTeX markup to denote sections, subsections, quotations, bold text, italics, etc. in LaTeX.  Then you pick a document style (sorta like choosing a &lt;span class="caps"&gt;CSS&lt;/span&gt; in web design) and LaTeX turns your plain text file into a beautifully formated &lt;span class="caps"&gt;PDF&lt;/span&gt; file for you. The idea is that, as a writer, you get to focus on writing and document structure and not worry about formatting and styling: distinct processes that word processors&amp;nbsp;conflate.  &lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve been aware of LaTeX for awhile, but the somewhat steep learning curve scared me away.  I&amp;#8217;d tried out the more &lt;a href="http://en.wikipedia.org/wiki/WYSIWYG"&gt;&lt;span class="caps"&gt;WYSIWYG&lt;/span&gt;&lt;/a&gt; oriented LaTeX apps like &lt;a href="http://www.lyx.org"&gt;LyX&lt;/a&gt; though they never felt right.  One of my bosses happens to be an economist and long-time LaTeX user though and he convinced Brian (coworker and fellow Soc grad student) and me to go for it anyway.  There are frustrating habits you have to break (for example, &amp;#8220;smart quotes&amp;#8221; don&amp;#8217;t work so you have to use two left quotes an then two right quotes to get quotations - also, things like &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; and $ are special characters to LaTeX so you have to preceed them with a \ or else they&amp;#8217;ll screw everything up), but it turns out that actually writing in plain text is one of the things I like most about LaTeX.  For example:
&lt;ul&gt;
&lt;li&gt;A paragraph in LaTeX is marked by a blank line (or multiple blank lines) between chunks of text.  In other words, a single return with no blank line still counts as one paragraph.  Instead of putting all your paragraphs into a single line - like word processors force you to do - you can break up your paragraph into &amp;#8220;sub-sections&amp;#8221; for writing purposes into separate lines.  This only shows for you the writer - the end product is a full, normal paragraph - but this for some reason has really seemed to help me organize my&amp;nbsp;paragraphs.&lt;/li&gt;
&lt;li&gt;Start any line with a % and it becomes a comment.  Comments are something you get really used to in any other computer language, but word processors don&amp;#8217;t really do this.  The &amp;#8220;commenting&amp;#8221; feature in Word, for example, is big, bulky and annoying: little sticky notes off to the side of your page that are hard to format and edit.  On the other hand, if I want to, say, delete a sentence but I&amp;#8217;m not totally sure yet, just put a % before it.  Or, if I want to make notes to myself throughout the document, like &amp;#8220;Hey, don&amp;#8217;t forget to add something about X here,&amp;#8221; I can just throw in a quick comment that&amp;#8217;ll be visible to me when I&amp;#8217;m writing but ignored in the final&amp;nbsp;product.&lt;/li&gt;
&lt;li&gt;Because your documents are plain text files they&amp;#8217;re small, and because LaTeX is both old and open-source, you know that in 20 or 30 years you&amp;#8217;ll still be able to use it.  (&lt;a href="http://diveintomark.org/archives/2006/06/02/when-the-bough-breaks"&gt;This article&lt;/a&gt;, including the comments, by Mac-turned-Linux user Mark Pilgrim got me thinking about these&amp;nbsp;issues.)&lt;/li&gt;
&lt;li&gt;And, speaking of learning curves that are worth it, I&amp;#8217;ve had to learn &lt;a href="http://en.wikipedia.org/wiki/Vi"&gt;Vi&lt;/a&gt; for my new job and, since Vi (well, &lt;a href="http://en.wikipedia.org/wiki/Vim_%28text_editor%29"&gt;Vim&lt;/a&gt;) has LaTeX syntax coloring, I can store the LaTeX files for all the papers I&amp;#8217;m working on our University server (which is fast, secure and gets backed up) and edit my files right off the server (which has LaTeX installed, of course) from any computer with internet access through a Terminal window.  I&amp;#8217;ve tried to explain to several people how cool this really is, but people don&amp;#8217;t seem to get it.  But now that my MacBook is on it&amp;#8217;s way to Apple for repair and I&amp;#8217;m stuck computer-less, this is a &lt;i&gt;huge&lt;/i&gt; advantage of the switch to the LaTeX/Vi combo: I can do my work anywhere and not have to worry about syncing files or installing the right applications. (Well, short of making sure any Windows computer has &lt;a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/"&gt;PuTTY&lt;/a&gt; installed.)  As far as web work goes, this is also a huge advantage.  I kinda help maintain some areas on our dept. webpage and it&amp;#8217;s so easy to do it all through a terminal window, vi and plain &lt;span class="caps"&gt;HTML&lt;/span&gt; - while there&amp;#8217;s a learning curve to all of this, there&amp;#8217;s a pretty significant learning curve to Dreamweaver as well, not to mention that it lacks the huge advantage of working from any machine anywhere. Part of my old job was helping our faculty and grad students with their web pages and the time I spent troubleshooting Dreamweaver problems was&amp;nbsp;ridiculous&amp;#8230;&lt;/li&gt;
&lt;/ul&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Fri, 06 Oct 2006 00:00:00 -0500</pubDate><guid>tag:,2006-10-06:2006/10/06/the-joy-of-tex/</guid></item><item><title>AMP in the Blogosphere</title><link>/2006/03/29/amp-in-the-blogosphere/</link><description>&lt;p&gt;The &lt;a href="http://www.soc.umn.edu/amp/ampindex.htm"&gt;American Mosaic Project&lt;/a&gt;, the project in our department that sent me to Boston two summers ago, &lt;a href="http://www.google.com/blogsearch?as_q=link%3Ahttp%3A%2F%2Fwww.ur.umn.edu%2FFMPro%3F-db%3Dreleases%26-lay%3Dweb%26-format%3Dumnnewsreleases%2Freleasesdetail.html%26ID%3D2816%26-Find&amp;num=10&amp;hl=en&amp;c2coff=1&amp;as_epq=&amp;as_oq=&amp;as_eq=&amp;as_drrb=q&amp;as_qdr=&amp;as_mind=29&amp;as_minm=3&amp;as_miny=2005&amp;as_maxd=29&amp;as_maxm=3&amp;as_maxy=2006&amp;lr=&amp;q=link:http://www.ur.umn.edu/FMPro%3F-db%3Dreleases%26-lay%3Dweb%26-format%3Dumnnewsreleases/releasesdetail.html%26ID%3D2816%26-Find&amp;ie=UTF-8&amp;filter=0&amp;sa=N&amp;start=0"&gt;has broken into the blogosphere&lt;/a&gt; thanks to the publication of a paper on atheism (in the April issue of the American Sociological Review) based on the results of a nationally-representative telephone survey the &lt;span class="caps"&gt;AMP&lt;/span&gt; did a few years back.  Blogs discussing the paper include &lt;a href="http://www.washingtonmonthly.com/archives/individual/2006_03/008488.php"&gt;The Washignton Monthly&lt;/a&gt;, &lt;a href="http://majikthise.typepad.com/majikthise_/2006/03/why_dont_they_t.html"&gt;Majikthise&lt;/a&gt; and &lt;a href="http://scienceblogs.com/pharyngula/2006/03/its_good_to_know_how_much_were.php"&gt;Pharyngula&lt;/a&gt;. &lt;a href="http://www.ur.umn.edu/unsreleases/find.php?ID=2816&amp;from=umnnews"&gt;Here is the press release&lt;/a&gt; on the paper.  The paper is based primarily on the responses to the following two&amp;nbsp;questions:&lt;/p&gt;
&lt;p&gt;First, People were asked the following, &amp;#8220;Now I want to read you a list of different groups of people who live in this country.  For each one, please tell me how much you think people in this group agree with &lt;span class="caps"&gt;YOUR&lt;/span&gt; vision of American society &amp;#8212; almost completely, mostly, somewhat, or not at all?&amp;#8221; Here&amp;#8217;s the frequency of respondents who said that each group &lt;i&gt;does not at all agree&lt;/i&gt; with their vision of American&amp;nbsp;society:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Atheists:&amp;nbsp;39.6%&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Muslims:&amp;nbsp;26.3%&lt;/li&gt;
&lt;li&gt;Homosexuals:&amp;nbsp;23.6%&lt;/li&gt;
&lt;li&gt;Conservative Christians:&amp;nbsp;13.5%&lt;/li&gt;
&lt;li&gt;Recent Immigrants:&amp;nbsp;12.5%&lt;/li&gt;
&lt;li&gt;Hispanics:&amp;nbsp;7.6%&lt;/li&gt;
&lt;li&gt;Jews:&amp;nbsp;7.4%&lt;/li&gt;
&lt;li&gt;Asian Americans:&amp;nbsp;7.0%&lt;/li&gt;
&lt;li&gt;African Americans:&amp;nbsp;4.6%&lt;/li&gt;
&lt;li&gt;White Americans:&amp;nbsp;2.2%&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Second, People were also asked the following question, &amp;#8220;People can feel differently about their children marrying people from various backgrounds.  Suppose your son or daughter wanted to marry an _____.  Would you approve of this choice, disapprove of it or wouldn&amp;#8217;t it make any difference at all one way or the other?&amp;#8221;  Here&amp;#8217;s the frequency of respondents who said they would &lt;i&gt;disapprove&lt;/i&gt; if their child wanted to marry a member of each&amp;nbsp;group:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Atheist:&amp;nbsp;47.6%&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Muslim:&amp;nbsp;33.5%&lt;/li&gt;
&lt;li&gt;African American:&amp;nbsp;27.2%&lt;/li&gt;
&lt;li&gt;Asian American&amp;nbsp;18.5%&lt;/li&gt;
&lt;li&gt;Hispanic:&amp;nbsp;18.5%&lt;/li&gt;
&lt;li&gt;Jew:&amp;nbsp;11.8%&lt;/li&gt;
&lt;li&gt;Conservative Christian:&amp;nbsp;6.9%&lt;/li&gt;
&lt;li&gt;White:&amp;nbsp;2.3%&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Penny Edgell, one of the authors of the paper, &lt;a href="http://www1.umn.edu/news/news-releases/2006/UR_RELEASE_MIG_2816.html"&gt;explains the findings like this&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Edgell also argues that today’s atheists play the role that Catholics, Jews and communists have played in the past—they offer a symbolic moral boundary to membership in American society.“It seems most Americans believe that diversity is fine, as long as every one shares a common ‘core’ of values that make them trustworthy—and in America, that ‘core’ has historically been religious,” says Edgell. Many of the study’s respondents associated atheism with an array of moral indiscretions ranging from criminal behavior to rampant materialism and cultural&amp;nbsp;elitism.&lt;/p&gt;
&lt;p&gt;Edgell believes a fear of moral decline and resulting social disorder is behind the findings. “Americans believe they share more than rules and procedures with their fellow citizens—they share an understanding of right and wrong,” she said. “Our findings seem to rest on a view of atheists as self-interested individuals who are not concerned with the common&amp;nbsp;good.”&lt;/p&gt;
&lt;/blockquote&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Wed, 29 Mar 2006 00:00:00 -0600</pubDate><guid>tag:,2006-03-29:2006/03/29/amp-in-the-blogosphere/</guid></item><item><title>Brownback and The Family</title><link>/2006/02/02/brownback-and-the-family/</link><description>&lt;p&gt;So back in my freshman year of college, I&amp;#8217;d just joined my fraternity and I was invited by some guys in the house to go on a trip for Spring Break to Washington &lt;span class="caps"&gt;D.C.&lt;/span&gt; We drove all the way to &lt;span class="caps"&gt;D.C.&lt;/span&gt; from Manhattan, &lt;span class="caps"&gt;KS&lt;/span&gt; and the agenda for the trip was basically this: we&amp;#8217;d do lots of site seeing, of course, but the real reason for the trip was that we&amp;#8217;d be staying with this &amp;#8220;group of friends&amp;#8221; in &lt;span class="caps"&gt;D.C.&lt;/span&gt; and be taking part in lots of Bible studies and things like that.  It&amp;#8217;s really hard to describe this actually, because in hindsight, I recognize how freaky it sounds, but it didn&amp;#8217;t seem that odd at the time.&amp;nbsp;Really.&lt;/p&gt;
&lt;p&gt;So there were basically two groups of people on this trip: a group of really active, deeply religious people (these were the people planning the trip) and then a smaller group of four or five people (including me) who weren&amp;#8217;t &lt;i&gt;not&lt;/i&gt; religious, but I&amp;#8217;d say the bigger factor in our saying &amp;#8220;yes&amp;#8221; to the invitation was that we&amp;#8217;d never been to &lt;span class="caps"&gt;D.C.&lt;/span&gt; and had no plans for Spring Break.  The whole Christian theme to the thing just sort of made it seem slighly more noble than, say, Cancun.  We were all friends with one another at school, but there were still clearly two cliques there.  The group also, by the way, included its fair share of campus leaders: one current and one past student body presidents, for&amp;nbsp;example.&lt;/p&gt;
&lt;p&gt;So at the time, my stance on both religion and politics were considerably different than they are now. I was basically apolitical, and I identified as a Christian, but as a very sort of unattached, free floating Christian.  I didn&amp;#8217;t attend church or anything.  In other words, I wasn&amp;#8217;t exactly suspicious of this mysterious group of Christian &amp;#8220;friends&amp;#8221; in Washington D.C., but I was also enough of an skeptic with respect to religion to not swallow anything &lt;i&gt;too radical&lt;/i&gt; without some resistance.  So here&amp;#8217;s a brief run-down of what I&amp;nbsp;remember:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We stayed in this house, named &amp;#8220;Ivanwald,&amp;#8221; with this odd mix of guys who were about our age, none of whom could really explain why they were there other than saying that they were trying to get in touch with Christ and stuff like that.  They liked to play this basketball game they&amp;#8217;d made up, and that was kind of fun and besides, the house was pretty&amp;nbsp;nice.&lt;/li&gt;
&lt;li&gt;We attended lunch in the Senate dining room with Sam Brownback.  I sat right next to him.  Now like I said, I was pretty apolitical at the time so my thoughts were basically, &amp;#8220;Huh, a Senator. Interesting.&amp;#8221;  I remember the silverwear was really nice, but the food wasn&amp;#8217;t that great.  And I tried to talk to him a bit, but it was a bit akward so I basically talked to my friends the whole time and let Brownback schmooz in peace with the student body presidents among us who were better at that sort of&amp;nbsp;thing.&lt;/li&gt;
&lt;li&gt;Later, we attended a Bible Study in this really nice house on C Street that was occupied by Brownback and a few other Congressmen.  So I took part in a living room Bible Study in the house of Sam Brownback, also attended by a few other Congressman, such as Zach Wamp and Steve Largent.  (To return to my point about being apolitical at the time: I was much more interested in the fact that it was Steven Largent, the &lt;a href="http://www.profootballhof.com/hof/member.jsp?player_id=123"&gt;Hall of Fame football player&lt;/a&gt;, than the fact that he was a current Representative.) And again, seemed like a unique enough experience.  Again, more so, say, than Cancun - or, more realistically for me, my parents house in Johnson&amp;nbsp;County.&lt;/li&gt;
&lt;li&gt;We met up with this guy named Doug Coe who was supposedly the leader of the &amp;#8220;Friends&amp;#8221; and he talked to us about how he&amp;#8217;d met all these famous heads of state from around the world and how he&amp;#8217;d tried to &amp;#8220;tell them all about Jesus.&amp;#8221;  This was honestly the first time I remember going, &amp;#8220;Uh&amp;#8230;this is&amp;nbsp;odd.&amp;#8221;&lt;/li&gt;
&lt;li&gt;Ok, those are the only exciting things I really remember.  The rest of the time was filled with tours of the capital and generic tourist stuff.  Like I said, these were my friends and it was a fun trip for the most&amp;nbsp;part.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Anyway, so a year or two ago, a guy who was also in the &amp;#8220;skeptical but along for the ride&amp;#8221; crowd with me emailed me this article, &lt;a href="http://www.harpers.org/JesusPlusNothing.html"&gt;&lt;i&gt;Jesus Plus Nothing&lt;/i&gt;&lt;/a&gt;, in Harper&amp;#8217;s by Jeffrey Sharlet, a journalist.  The guy stayed in the exact same house we stayed in.  He played the same silly basketball game and both my friend and I recognized many of the people he described.  He met with the mysterious Doug Coe and talks about Brownback and everything.  Damn!  Of course, by the point that I read this, I had very different positions regarding religion and politics (as anyone visiting this page probably knows already) than I did than, and I hadn&amp;#8217;t really thought about that trip all that much since then.  I cannot imagine Current Jon being able to get through that week incident-free (or ever being invited, for that matter).  My memories of it had been typical vacation memories (the drive itself, the site seeing, football games in &amp;#8220;Ivanwald&amp;#8217;s front yard, etc.) and I&amp;#8217;d kind of forgotten the whole religious &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; political&amp;nbsp;backdrop.&lt;/p&gt;
&lt;p&gt;But anyway, the same friend just emailed me another article just published in Rolling Stone, again by Sharlet, this time on Sam Brownback specifically, called &lt;a href="http://www.rollingstone.com/politics/story/9178374/gods_senator/?rnd=1138818189564&amp;has-player=true"&gt;&lt;i&gt;God&amp;#8217;s Senator&lt;/i&gt;&lt;/a&gt;.  It&amp;#8217;s a fascinating read if you&amp;#8217;re interested (and scared) of how much power the &lt;a href="http://en.wikipedia.org/wiki/Christianism"&gt;Christianists&lt;/a&gt; have in Washington.  But Sharlet, being as he wrote the first article on &amp;#8220;The Friends,&amp;#8221; spends a lot of time discussing the group again and Brownback&amp;#8217;s relationship with them.  Another fascinating&amp;nbsp;read.  &lt;/p&gt;
&lt;p&gt;Both are quite lengthy, but I highly recommend them.  The Harper&amp;#8217;s one, especially, does a good job of communicating the most important point that I remember learning from my trip: they make this stuff sound downright &lt;i&gt;progressive&lt;/i&gt;.  Remember how I said I was enough of a skeptic to be suspicious of anything too radical?  It was true.  I was a pretty &amp;#8220;liberal&amp;#8221; Christian I suppose, and there was enough of that &amp;#8220;liberal-ness&amp;#8221; in there to make the type of Christianity they were pushing seem very appealing - or at least not scary.  This type of Christian discourse has really become popular and influential as well. It has a very populist, individualist flavor to it.  I remember them specifically downplaying denominational groups, for example, because Christianity is all about your &amp;#8220;personal relationship with Jesus&amp;#8221; and about how we&amp;#8217;re supposed to care for others and not get caught up in materialism and consumerism and all that stuff.  All nice liberal stuff - until you start to get to the whole &amp;#8220;Ok, how exactly do we do all of this?,&amp;#8221; but who has time to get that far along,&amp;nbsp;really?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Thu, 02 Feb 2006 00:00:00 -0600</pubDate><guid>tag:,2006-02-02:2006/02/02/brownback-and-the-family/</guid></item><item><title>Al Franken Likes My Wife</title><link>/2005/12/07/al-franken-likes-my-wife/</link><description>&lt;p&gt;So Al Franken was at Barnes &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Noble signing copies of his new book the other day, and Teresa got me a signed copy.  She told him to &amp;#8220;write whatever he wanted&amp;#8221; on it, and this is what he&amp;nbsp;wrote:&lt;/p&gt;
&lt;p&gt;&lt;img src="/static/files/fromal.jpg" width="400" height="300"/&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Wed, 07 Dec 2005 00:00:00 -0600</pubDate><guid>tag:,2005-12-07:2005/12/07/al-franken-likes-my-wife/</guid></item><item><title>Merry Christmas - 7 weeks early</title><link>/2005/11/05/merry-christmas-7-weeks-early/</link><description>&lt;p&gt;Because we never actually get to celebrate Christmas at our home, we like to set up Christmas decorations really early, although the first week in November is probably a new record for us.  I just wanted to show off my special ornament that got a prime spot at the top of the&amp;nbsp;tree:&lt;/p&gt;
&lt;p&gt;&lt;img src='/static/files/flyingvxmas.jpg' alt='Flying V Christmas' /&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Sat, 05 Nov 2005 00:00:00 -0600</pubDate><guid>tag:,2005-11-05:2005/11/05/merry-christmas-7-weeks-early/</guid></item><item><title>You Know You’re An Academic When…</title><link>/2005/11/04/you-know-youre-an-academic-when/</link><description>&lt;p&gt;You start referring to the college where you got your undergraduate degree as &amp;#8220;where I did my undergraduate&amp;nbsp;work.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Note: I&amp;#8217;m not referring to me.  I haven&amp;#8217;t been able to bring myself to refer to my time at &lt;span class="caps"&gt;KSU&lt;/span&gt; as &amp;#8220;work&amp;#8221; yet, and &lt;del&gt;probably&lt;/del&gt; hopefully never&amp;nbsp;will.&lt;/i&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Fri, 04 Nov 2005 00:00:00 -0600</pubDate><guid>tag:,2005-11-04:2005/11/04/you-know-youre-an-academic-when/</guid></item><item><title>My Drive Slow Game</title><link>/2005/10/16/my-drive-slow-game/</link><description>&lt;p&gt;Our car has a little computer in the dashboard that calculates your miles-per-gallon as you drive.  You can set it to calculate it in &amp;#8220;real-time&amp;#8221; as you drive or to compute the average mpg for each&amp;nbsp;trip. &lt;/p&gt;
&lt;p&gt;I think every car needs one of these because it&amp;#8217;s an incentive to drive more efficiently when you can see how much fast, aggressive driving costs you.  Instead of slower driving being boring, it becomes a challenge to see how high you can push the mpg, and it&amp;#8217;s surprising how much of a difference driving style&amp;nbsp;makes. &lt;/p&gt;
&lt;p&gt;Our car&amp;#8217;s a Jetta &lt;span class="caps"&gt;TDI&lt;/span&gt; diesel, which gets pretty good mileage no matter what, but driving style makes a big difference.  I&amp;#8217;ve been experimenting with trips I make a lot (to and from Teresa&amp;#8217;s work, for example) and I&amp;#8217;ve gotten a low of 38 and a high of 56 mpg (the indicator is a little off - I think the actual mpg tends to be 4-5 mpg lower) just by varying my style slightly. The key ingredients seem to be how early you shift while accelerating and how fast you go on the highway. For example, going 55 instead of 65 makes a difference of only a few miles per gallon, but jumping up to 75 or 80 really causes a significant drop in&amp;nbsp;mpg. &lt;/p&gt;
&lt;p&gt;Not that I plan on driving 55 everywhere (&lt;em&gt;I can&amp;#8217;t&lt;/em&gt;&amp;#8230;no, i won&amp;#8217;t say it), but it&amp;#8217;s nice to have an incentive to take it easy a bit more &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; to actually make it&amp;nbsp;fun.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Sun, 16 Oct 2005 00:00:00 -0500</pubDate><guid>tag:,2005-10-16:2005/10/16/my-drive-slow-game/</guid></item><item><title>Automobile Accidents</title><link>/2005/09/21/automobile-accidents/</link><description>&lt;p&gt;I&amp;#8217;ve been extremely fortunate in my life to have never been in a car accident (knock on wood).   This morning, I saw probably the nastiest I&amp;#8217;ve ever witnessed first-hand.  The car about three cars in front of me pulled out in the intersection as the light turned green and a big white van ran the red light in the other direction, smashing into the passenger side of the car.  The van didn&amp;#8217;t see the car at all - it didn&amp;#8217;t appear to have braked at all, so it was probably going at least the 35 mph speed limit on the&amp;nbsp;street.  &lt;/p&gt;
&lt;p&gt;The car wrapped around the van&amp;#8217;s driver side and a woman who appeared to be a nurse jumped out of her car and ran over to the car.  She appeared to be motioning to someone inside and went back to her car fairly quickly (for a cell phone, I&amp;#8217;d guessed.)  I&amp;#8217;ve been trying to let these two last bits convince me that the driver was going to survive: since it swung around the van on the side it did, hopefully the van hit the backseat passenger side (which was hopefully empty) and the woman was acting as if she was actually communicating with someone in the front seat.  These are probably just false comforts that helped me finish the drive home though because it&amp;#8217;s hard to imagine how that person&amp;#8217;s life is not, at minimum, going to be altered in some significant way because of this&amp;nbsp;accident.&lt;/p&gt;
&lt;p&gt;On any given morning in a city like this, you&amp;#8217;ll encounter hundreds, if not thousands, of cars out on the road on any given trip.  It&amp;#8217;s actually always amazed me that more accidents don&amp;#8217;t happen.  I mean, I can&amp;#8217;t go to the grocery store once without having at least one person crash their cart into mine, so how can we expect the result to be better in automobiles going up to 80 mph?  Sure, you can try to train people to be careful.  I distinctly remember a time as a kid where my Mom hesitated at a green light because it looked like the person coming the other way wasn&amp;#8217;t stopping - and she was right: they didn&amp;#8217;t.  I remember her warning that you can&amp;#8217;t just trust the light because people aren&amp;#8217;t always paying as much attention as they should.  I&amp;#8217;ve remembered this experience a few other times in my life where I, myself, had noticed just in time that the person coming the other direction was not stopping at their red&amp;nbsp;light.&lt;/p&gt;
&lt;p&gt;But even with well-trained individuals, cars are still a horribly perilous form of transportation.  My Mom would get a kick out the fact I remembered this story because she really hates driving.  She tends to worry about a lot of things actually (which can be annoying, especially when you&amp;#8217;re, say, her teenage son) but I think her fear of driving is actually quite rational.  Depending on which website I believe from my quick Google search, somewhere between 40,000 and 50,000 people die each year because of automobile accidents (not to mention the effect cars have on air pollution, which may actually cause &lt;a href="http://news.bbc.co.uk/1/hi/health/369169.stm"&gt; more deaths than accidents&lt;/a&gt;, or the deaths caused by wars fought over protecting our fuel source for automobiles).  This is the basis for the classic ethics class puzzle: you&amp;#8217;re approached with a proposal for a bold new invention that will allow people the freedom to travel wherever they want, whenever they want. The only cost is 50,000 deaths per year.  Do you&amp;nbsp;approve?  &lt;/p&gt;
&lt;p&gt;Of course, there are improvements that can be made.  For example, the odds of dying in an automobile accident 50 years ago was &lt;a href="http://www.benbest.com/lifeext/causes.html"&gt;four times greater&lt;/a&gt; than it is today.  Most of this improvement is due to safety improvements made to cars themselves, and most of these improvements the auto industry had to be forced into implementing because of their policy that training safe drivers, not making safer cars, was the way to decrease auto deaths (here&amp;#8217;s a &lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/0226310949?v=glance"&gt;good book on this&lt;/a&gt;).  This is an attractive policy for obvious reasons to the automobile industry (because it means it&amp;#8217;s never their fault) but it&amp;#8217;s also intuitive to all of us because individual-level solutions seem so concrete and obvious to us.  Don&amp;#8217;t want to get in an accident?  Be careful!  Beautiful simplicity.  The media likes this one, too.  Whenever the local news covers car accidents (or fires, or burglaries, or gang shootings, or any other catastrophe for that matter), these individual level cautions are prescribed.  Don&amp;#8217;t drive when you&amp;#8217;re tired.  Avoid road rage.  Watch your mirrors.  Of course these things are important, and all good drivers ought to do these things, and if they&amp;#8217;re not, they should be held responsible when they cause accidents.  But these things alone will not prevent some other guy  in a big white van from smashing into you while flying through a red&amp;nbsp;light.  &lt;/p&gt;
&lt;p&gt;At some point we need to come to grips with the fact that cars are a &lt;i&gt;choice&lt;/i&gt; we make as a society, and that choice comes with &lt;i&gt;serious costs&lt;/i&gt; built in to the very nature of an automobile-centric transportation system run by millions of oh-so-fallible human beings (I&amp;#8217;m sure the guy in the van was normally a good driver - it was just early in the morning, maybe he was late for work, maybe he just lost his job or got in a fight with his wife, maybe&amp;#8230;.). Can you really say that 40,000 deaths a year are &amp;#8220;accidents&amp;#8221; if we know, in Janurary of each year, that the number of deaths this year will be about the same as the number of deaths the previous&amp;nbsp;year?  &lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Wed, 21 Sep 2005 00:00:00 -0500</pubDate><guid>tag:,2005-09-21:2005/09/21/automobile-accidents/</guid></item><item><title>Car Blogging</title><link>/2005/07/09/car-blogging/</link><description>&lt;p&gt;On the trip home last weekend, while Teresa was driving, I typed up some notes on the frustrations of driving.  The drive itself can actually be very pleasant&amp;#8230;it&amp;#8217;s other drivers that make it difficult. Therefore, I bring you my taxonomy of annoying&amp;nbsp;drivers:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;The Cruise Control driver - sets the cruise control once and will not slow down or speed up, no matter what.  If their cruise control is set at .01 mph faster than yours, they will spend 10 minutes slowly passing you, refusing to tap on the gas just once to speed up the&amp;nbsp;process.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The Really-Needs-to-Use-Cruise Control driver - The opposite problem.  This person will pass you on every downhill and fall behind you on every uphill.  They will also quickly appear in your rear-view mirror right up next to your rear bumper, but if you get over for them to pass you, will instantly slow down or perhaps get over with you and continue to ride your&amp;nbsp;ass.  &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The Left-Lane-is-Mine driver - This is pretty self-explanatory, although it&amp;#8217;s worth emphasizing that this kind of driver is not necessarily a fast or slow driver, they just refuse to move from the left lane no matter&amp;nbsp;what.  &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;span class="caps"&gt;NASCAR&lt;/span&gt;-Wannabe - This driver likes to drive as fast and as recklessly as is possible, and it&amp;#8217;s likely they have &lt;span class="caps"&gt;NASCAR&lt;/span&gt; window and bumper stickers all over their car.  Even if you really aren&amp;#8217;t trying to race them, they still pretend like you are, glaring at you and revving their engine as they pass&amp;nbsp;you. &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The Stalker - This person will find someone who is going a good speed for them and imprint on them like a duck for the rest of the trip.  I don&amp;#8217;t really mind this because I do it myself sometimes (it&amp;#8217;s kind of unavoidable you&amp;#8217;ll eventually find someone going the same speed as you, especially if you&amp;#8217;re like me and are a &amp;#8220;10 over rule&amp;#8221; kind of driver), but I only don&amp;#8217;t mind so long as the stalker in question does not insist on tailgating at the same&amp;nbsp;time.  &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The Multitasking driver - This driver is not content to simply drive.  Instead they insist on smoking a cigarette, singing along with the radio, talking on their cell phone, reaching for something in the backseat, eating a sandwich and swerving all over the road&amp;#8230;all at&amp;nbsp;once!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The Tunnel-Vision driver - This person doesn&amp;#8217;t realize their car has mirrors.  You can always verify this by looking at their rearview mirror and seeing that it is knocked so far out of position that they couldn&amp;#8217;t possibly see out of if they wanted to.  This person is, understandably, prone to cutting people off and also to being a &amp;#8220;left-lane-is-mine&amp;#8221; (or &amp;#8220;right-lane-is-mine&amp;#8221;) kind of driver as&amp;nbsp;well.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Obviously, there are other types that exist, but require no explanation is needed beyond simply stating their name: the Speed Limit Driver, the Road Rage driver, the Staying-Inside-Lane-Markers-is-Optional driver, etc.  What kind of driver am I, you ask?  The Perfect Driver, of&amp;nbsp;course.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Sat, 09 Jul 2005 00:00:00 -0500</pubDate><guid>tag:,2005-07-09:2005/07/09/car-blogging/</guid></item><item><title>I Need a Lion Tamer</title><link>/2005/03/29/i-need-a-lion-tamer/</link><description>&lt;p&gt;As an undergrad, we had Mr. Everything in our fraternity.  He was student body president and he went to bed after and got up before anyone else in the house he was so busy.  He sketched out his schedule each week on a legal size piece of paper (he outgrew 8.5 x 11) and mapped out everything he had to do each week, assigning points to each task and requiring that he reach a certain amount of points each day.  Sounds crazy, but he got a lot done.  &lt;br /&gt;&lt;br /&gt;I was teasing him about the excessive attention to detail once and he told me a little story.  You know how lion tamers at the circus always carry a stool with them?  And when the lion gets aggressive they put the stool in the face of the lion?  Ever wondered how a silly stool could intimidate a big lion?  Well, the reason it works, according to this guy at least, is that the lion sees all three legs coming at him at once and doesn&amp;#8217;t know what to focus on, so it gives up. &lt;br /&gt;&lt;br /&gt;The moral of the story is that we&amp;#8217;re like this.  If we see a bunch of things coming at us at once, we don&amp;#8217;t know where to start and want to just give up and go take a nap.  This is what I&amp;#8217;ve been like the last few days.  Too many things coming at me at once and I just keep stalling about getting going on any of&amp;nbsp;it.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Tue, 29 Mar 2005 00:00:00 -0600</pubDate><guid>tag:,2005-03-29:2005/03/29/i-need-a-lion-tamer/</guid></item><item><title>New Music</title><link>/2003/11/23/new-music/</link><description>&lt;p&gt;A few days ago, I stumbled upon my friend &lt;a href="http://www.livejournal.com/users/monkeyplusplus/"&gt;&lt;/a&gt;&lt;a href="http://www.livejournal.com/users/monkeyplusplus/" target="NewWindow"&gt;James&lt;/a&gt; online.  I first met James when we were in elementary school and our art teacher would let us bring in music to listen to during class.  One day I noticed that someone had brought in Joe Satriani&amp;#8217;s &lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/B00000JQFM/qid=1069601895/sr=8-4/ref=sr_8_4/102-8888510-0982569?v=glance&amp;s=music&amp;n=507846"&gt;&lt;/a&gt;&lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/B00000JQFM/qid=1069601895/sr=8-4/ref=sr_8_4/102-8888510-0982569?v=glance&amp;s=music&amp;n=507846" target="NewWindow"&gt;Surfing with the Alien&lt;/a&gt; (yes, this was, like, 4th grade, when everyone else was listening to &lt;span class="caps"&gt;MC&lt;/span&gt; Hammer or the New Kids on the Block) and I thought &amp;#8220;Whoa!  I gotta find out who else is listening to Satch!&amp;#8221; It was&amp;nbsp;James.   &lt;/p&gt;
&lt;p&gt;So anyway, James just recently composed and recorded a song on his computer and he sent it to me and I added guitars to it.   Check it out &lt;a href="http://files.smajda.com/jon/decay-smajdified.mp3"&gt;here&lt;/a&gt;.  (It&amp;#8217;s about 5&amp;nbsp;&lt;span class="caps"&gt;MB&lt;/span&gt;.)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Smajda</dc:creator><pubDate>Sun, 23 Nov 2003 00:00:00 -0600</pubDate><guid>tag:,2003-11-23:2003/11/23/new-music/</guid></item></channel></rss>