<?xml version='1.0' encoding='utf-8' ?>
<!--  If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/  -->
<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:media='http://search.yahoo.com/mrss/' xmlns:atom10='http://www.w3.org/2005/Atom'>
<channel>
  <title>assert(♥)</title>
  <link>http://markpasc.livejournal.com/</link>
  <description>assert(♥) - LiveJournal.com</description>
  <lastBuildDate>Tue, 08 Dec 2009 17:45:55 GMT</lastBuildDate>
  <generator>LiveJournal / LiveJournal.com</generator>
  <lj:journal>markpasc</lj:journal>
  <lj:journalid>232675</lj:journalid>
  <lj:journaltype>personal</lj:journaltype>
  <atom10:link rel='hub' href='http://pubsubhubbub.appspot.com/' />
  <image>
    <url>http://l-userpic.livejournal.com/49936953/232675</url>
    <title>assert(♥)</title>
    <link>http://markpasc.livejournal.com/</link>
    <width>75</width>
    <height>75</height>
  </image>

<item>
  <guid isPermaLink='true'>http://markpasc.livejournal.com/190775.html</guid>
  <pubDate>Tue, 08 Dec 2009 17:45:55 GMT</pubDate>
  <title>Advent Advent</title>
  <link>http://markpasc.livejournal.com/190775.html</link>
  <description>I set up &lt;a href=&quot;http://advent.neologasm.org/&quot;&gt;a little advent calendar thing&lt;/a&gt; if you wanna &lt;a href=&quot;http://syndicated.livejournal.com/25days25days/profile&quot;&gt;watch it here&lt;/a&gt;.</description>
  <comments>http://markpasc.livejournal.com/190775.html</comments>
  <category>feed</category>
  <category>xmas</category>
  <category>advent</category>
  <lj:music>The xx - Basic Space</lj:music>
  <media:title type="plain">The xx - Basic Space</media:title>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://markpasc.livejournal.com/190586.html</guid>
  <pubDate>Sat, 24 Jan 2009 01:46:44 GMT</pubDate>
  <title>terminal craziness</title>
  <link>http://markpasc.livejournal.com/190586.html</link>
  <description>What errant key or cosmic ray consistently makes it impossible to switch &lt;tt&gt;screen&lt;/tt&gt; tabs with ctrl-A and the number? It just prints the number, then when I hit backspace to delete the number, &lt;em&gt;then&lt;/em&gt; it acts like I hit ctrl-A backspace instead and goes to the previous tab, whichever that is.&lt;br /&gt;&lt;br /&gt;Even more galling is I have yet to figure it out. I just have to wait until, sometimes, after waiting long enough, it starts working again. Like I completely closed every screen tab and screen &lt;em&gt;and&lt;/em&gt; the terminal session &lt;em&gt;and&lt;/em&gt; iTerm, and when I logged back in it was &lt;em&gt;still&lt;/em&gt; broken—yet in just the time it has taken to write this, it has resolved itself without explanation and works again.&lt;br /&gt;&lt;br /&gt;After all these years I have no idea how terminals work. It&apos;s still completely high magic and I&apos;m totally stuck whenever it breaks. It doesn&apos;t help that it&apos;s completely impossible to search the internet for keystrokes.</description>
  <comments>http://markpasc.livejournal.com/190586.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>8</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://markpasc.livejournal.com/190231.html</guid>
  <pubDate>Mon, 15 Dec 2008 01:00:18 GMT</pubDate>
  <title>JumpDomain sucks</title>
  <link>http://markpasc.livejournal.com/190231.html</link>
  <description>&lt;p&gt;JumpDomain is totally screwing me by not renewing my markpasc.org domain even though I paid them to renew it on the 4th.&lt;/p&gt;

&lt;p&gt;People have had to resort to messaging me on Flickr and elsewhere to ask me about stuff. The site is still &lt;a href=&quot;http://markpasc.org.hg.sabren.com/mark/&quot;&gt;available at a different name&lt;/a&gt; thanks to Cornerhost&amp;#8217;s nice every-name-a-subdomain feature, but that doesn&amp;#8217;t help anyone searching or, say, sending me email. The earliest disruption was when I tried to reply to my sister-in-law about getting gifts for my nephews (&lt;a href=&quot;http://twitter.com/markpasc/status/1054121451&quot;&gt;noted earlier&lt;/a&gt;) and Comcast rejected my mail; I didn&amp;#8217;t realize at the time why but the next day my web site was down too, so it was obvious.&lt;/p&gt;

&lt;p&gt;As everyone else on the internet seems to note (I included &lt;a href=&quot;http://www.vistainter.com/reviews/J/jumpdomain.com/&quot;&gt;this&lt;/a&gt;, &lt;a href=&quot;http://herbiesworld.blogspot.com/2008/02/suck-it-jumpdomain.html&quot;&gt;this&lt;/a&gt;, and &lt;a href=&quot;http://www.glenngutierrez.com/blog/2008/06/thinking-about-jumpdomaincom.html&quot;&gt;this&lt;/a&gt; in my message to Tucows; also &lt;a href=&quot;http://momgadget.com/jumpdomain-a-not-so-nice-momgadget-review/&quot;&gt;this&lt;/a&gt;) JumpDomain was highly regarded when they first started, but seem to be &lt;em&gt;not even answering support requests&lt;/em&gt; anymore. How Tucows or Enom would let them get away with running a business that irresponsibly is beyond me. (My support request has only been open a few days, but after reading these stories, I gave up and contacted Tucows directly today.)&lt;/p&gt;

&lt;p&gt;I have to admit I&amp;#8217;m surprised that Tucows would throw a &lt;a href=&quot;http://markpasc.org/&quot;&gt;tasting style page&lt;/a&gt; up on my domain. Even before I found out they were doing that, I fantasized a couple minutes yesterday I might start my own registrar or reseller; one feature would be a more helpful failwhale style &amp;#8220;Technical difficulties!&amp;#8221; page warning a customer that a domain had expired, but I wasn&amp;#8217;t sure ICANN would allow a registrar to take over an expired domain immediately like that. (I figure this kills your site from search engine listings either way.) It&amp;#8217;s sad that it&amp;#8217;s possible but Tucows is spamvertising instead. Hopefully they can make up for it by helping me get the name back.&lt;/p&gt;

&lt;p&gt;Also not encouraging is that on &lt;a href=&quot;http://domainhelp.tucows.com/&quot;&gt;the Tucows Domain Name Help Center&lt;/a&gt;, the &amp;#8220;you can go here for assistance&amp;#8221; link doesn&amp;#8217;t work. Fortunately they have other links that do, such as &lt;a href=&quot;http://helpcenter.tucows.com/index.php?lang=en&amp;amp;catnr=28&amp;amp;faqnr=336&amp;amp;prog=TFC#If%20my%20provider%20does%20not%20help%20me,%20can%20you%20assist?&quot;&gt;their &amp;#8220;If my provider does not help me, can you assist?&amp;#8221; FAQ&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I did contribute to this myself by not realizing I had an old email for my admin address on that domain. I may need to file the &lt;a href=&quot;http://adminchange.com/&quot;&gt;Change of Admin Email&lt;/a&gt; form with Tucows for them to help me renew/release the domain. Oddly enough this never mattered before in the &lt;em&gt;several years&lt;/em&gt; I&amp;#8217;ve been renewing this domain, so I never noticed. (Registrar feature #2: better integrated monitoring and updating of contact emails across an account and all its domains.)&lt;/p&gt;

&lt;p&gt;My other domains are with &lt;a href=&quot;http://weblaunching.net/&quot;&gt;WebLaunching.net&lt;/a&gt;, though I haven&amp;#8217;t had a customer service emergency to test with them either. At least they don&amp;#8217;t have &lt;a href=&quot;http://www.google.com/search?q=jumpdomain&quot;&gt;the vociferous web hate JumpDomain now has&lt;/a&gt;, plain as day on the first page of Google results.&lt;/p&gt;

&lt;p&gt;Are your names coming up for renewal? Who&amp;#8217;s your registrar? Do you like them?&lt;/p&gt;</description>
  <comments>http://markpasc.livejournal.com/190231.html</comments>
  <category>sucks</category>
  <category>customer service</category>
  <category>jumpdomain</category>
  <category>domain names</category>
  <lj:music>The Flaming Lips - Christmas at the Zoo</lj:music>
  <media:title type="plain">The Flaming Lips - Christmas at the Zoo</media:title>
  <lj:security>public</lj:security>
  <lj:reply-count>8</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://markpasc.livejournal.com/190024.html</guid>
  <pubDate>Sat, 25 Oct 2008 01:46:42 GMT</pubDate>
  <link>http://markpasc.livejournal.com/190024.html</link>
  <description>There once was a young man from Flint&lt;br /&gt;Who’d torture with both eyes a-glint&lt;br /&gt;For all he would say,&lt;br /&gt;Every night and each day,&lt;br /&gt;Was, “Any you quaids got a smint?”</description>
  <comments>http://markpasc.livejournal.com/190024.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://markpasc.livejournal.com/189623.html</guid>
  <pubDate>Sun, 12 Oct 2008 04:31:56 GMT</pubDate>
  <title>Five months in 15 pictures</title>
  <link>http://markpasc.livejournal.com/189623.html</link>
  <description>&lt;p&gt;I only read &lt;a href=&quot;http://www.activate.us/&quot;&gt;Activate&lt;/a&gt; for the pictures, as they&amp;#8217;re so good at picking out the best of Reuters. I caught up from issue 100 (late May), and here are 15 favorites.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&amp;#8220;&lt;a href=&quot;http://activate.us/_popups/issue100/w3.php&quot;&gt;A woman dressed as a maiko&lt;/a&gt; (apprentice geisha) walks down a street wearing US Democratic Party candidate Barack Obama campaign buttons in Kyoto, Japan, on May 20, 2008.&amp;#8221;&lt;/li&gt;
&lt;li&gt;&amp;#8220;White House staff, press, and Secret Service personnel sit outside a luxury trailer where US first lady Laura Bush flies in privacy inside a C-17 military aircraft, &lt;a href=&quot;http://activate.us/_popups/issue103/w4.php&quot;&gt;during a seven-hour flight&lt;/a&gt; from Afghanistan to Slovenia, on June 8, 2008.&amp;#8221;&lt;/li&gt;
&lt;li&gt;&amp;#8220;&lt;a href=&quot;http://activate.us/_popups/issue107/cover/index.html&quot;&gt;People watch fireworks&lt;/a&gt; during the first edition of the Golden Nights International Pyrotechnic Festival in Bucharest, Romania, on July 5, 2008.&amp;#8221;&lt;/li&gt;
&lt;li&gt;&amp;#8220;Firefighter Cody Cox of Colorado looks over &lt;a href=&quot;http://activate.us/_popups/issue107/w5.php&quot;&gt;a burned redwood forest&lt;/a&gt; while working to control hot spots during a wildfire in Big Sur, California, on July 7, 2008.&amp;#8221;&lt;/li&gt;
&lt;li&gt;&amp;#8220;People walk across a copy of Russian-born expressionist Vassily Kandinsky&amp;#8217;s painting &amp;#8216;Weilheim-Marienplatz&amp;#8217; on &lt;a href=&quot;http://activate.us/_popups/issue110/w1.php&quot;&gt;the pavement of the market square&lt;/a&gt; in the southern Bavarian town of Weilheim, Germany, on July 28, 2008.&amp;#8221;&lt;/li&gt;
&lt;li&gt;&amp;#8220;&lt;a href=&quot;http://activate.us/_popups/issue110/w4.php&quot;&gt;A magnet carries confiscated guns&lt;/a&gt;, to be thrown into a melting pot and destroyed, at an iron and steel plant in Montevideo, Uruguay, on July 24, 2008.&amp;#8221;&lt;/li&gt;
&lt;li&gt;&amp;#8220;A reveller &lt;a href=&quot;http://activate.us/_popups/issue114/w2.php&quot;&gt;swims in tomato pulp&lt;/a&gt; during the annual tomatina (tomato fight) in the Mediterranean village of Buñol, Spain, on August 27, 2008.&amp;#8221;&lt;/li&gt;
&lt;li&gt;&amp;#8220;A man &lt;a href=&quot;http://activate.us/_popups/issue114/w4.php&quot;&gt;carries drinking water&lt;/a&gt; through a flooded street in the northern Indian city of Lucknow, on August 27, 2008.&amp;#8221;&lt;/li&gt;
&lt;li&gt;&amp;#8220;Informatics PhD student Sebastian Bitzer performs push-up exercises &lt;a href=&quot;http://activate.us/_popups/issue115/w2.php&quot;&gt;with a programmed Kondo humanoid robot&lt;/a&gt;, at the newly opened Informatics Forum building of the University of Edinburgh, Scotland, on September 3, 2008.&amp;#8221;&lt;/li&gt;
&lt;li&gt;&amp;#8220;&lt;a href=&quot;http://activate.us/_popups/issue115/w4.php&quot;&gt;A US soldier waves to residents&lt;/a&gt; at the newly opened Mithaq swimming pool in Baghdad&amp;#8217;s Sadr City, on August 30, 2008.&amp;#8221;&lt;/li&gt;
&lt;li&gt;&amp;#8220;A worker &lt;a href=&quot;http://activate.us/_popups/issue117/w5.php&quot;&gt;mows around a sculpture&lt;/a&gt; entitled &amp;#8216;Innerscape on the Move&amp;#8217; by artist Zadok Ben-David at a Sotheby&amp;#8217;s exhibition at Chatsworth House in England, on September 16, 2008.&amp;#8221;&lt;/li&gt;
&lt;li&gt;&amp;#8220;A worker &lt;a href=&quot;http://activate.us/_popups/issue118/cover/index.html&quot;&gt;climbs among skylights&lt;/a&gt; on the &amp;#8216;living roof&amp;#8217; — a 2.5 acre expanse of native California plants — at the California Academy of Sciences building in San Francisco, California, on September 18, 2008.&amp;#8221;&lt;/li&gt;
&lt;li&gt;&amp;#8220;Museum of Tropical Queensland researcher Neil Bruce &lt;a href=&quot;http://activate.us/_popups/issue118/w1.php&quot;&gt;studies specimens in a lighted aquarium&lt;/a&gt; on Lizard Island Reef in far-northern Australia.&amp;#8221;&lt;/li&gt;
&lt;li&gt;&amp;#8220;Spanish flamenco dancer Andres Marin &lt;a href=&quot;http://activate.us/_popups/issue118/w2.php&quot;&gt;performs as musician Llorenc Barber plays bells&lt;/a&gt;, during a rehearsal of &amp;#8216;El Cielo de tu Boca&amp;#8217; at the Biennial of Flamenco in Seville, Spain, on September 22, 2008.&amp;#8221;&lt;/li&gt;
&lt;li&gt;&amp;#8220;&lt;a href=&quot;http://activate.us/_popups/issue120/cover/index.html&quot;&gt;A Kazakh officer shows off a large map&lt;/a&gt; with a plan of the joint Kazakh-Russian military exercise at Otar range, some 93 miles west of Almaty, Kazakhstan, on October 3, 2008.&amp;#8221;&lt;/li&gt;
&lt;/ol&gt;</description>
  <comments>http://markpasc.livejournal.com/189623.html</comments>
  <category>activate</category>
  <category>photos</category>
  <category>news</category>
  <lj:music>The Broken West - Terror for Two</lj:music>
  <media:title type="plain">The Broken West - Terror for Two</media:title>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://markpasc.livejournal.com/189329.html</guid>
  <pubDate>Fri, 10 Oct 2008 15:32:20 GMT</pubDate>
  <title>Recovering from &quot;(no branch)&quot; during a git rebase</title>
  <link>http://markpasc.livejournal.com/189329.html</link>
  <description>&lt;p&gt;I was using &lt;code&gt;git rebase&lt;/code&gt; to merge changesets from one subversion repository onto code from a completely different repository. Figuring out multiple svn-remotes and the attendant issues was fun&lt;sup&gt;1&lt;/sup&gt;, though once I figured out I did want to &lt;code&gt;rebase&lt;/code&gt;, which onto what, &lt;a href=&quot;http://github.com/guides/remove-a-remote-branch&quot;&gt;how to delete a remote branch&lt;/a&gt;, and how to use &lt;code&gt;rebase --interactive&lt;/code&gt; to edit &lt;code&gt;git svn&lt;/code&gt;&amp;#8217;s ported commit messages, it worked pretty well. But that&amp;#8217;s not important.&lt;/p&gt;

&lt;p&gt;During the rebase, I ended up off the branch I was trying to do the merge &amp;#8220;in,&amp;#8221; where &lt;code&gt;git branch&lt;/code&gt; said I was on &lt;code&gt;(no branch)&lt;/code&gt;. However, like everyone else on the internet, I blithely continued past that point. How do I recover from &lt;code&gt;(no branch)&lt;/code&gt; without losing the completed rebase?&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;mpaschal@mpaschal-mt:~/svn/mt/git$ git branch -a
* (no branch)
  atompub
  master
  git-svn
  github/master
  trunk
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Of the search results I consulted, &lt;a href=&quot;http://hasno.info/2008/6/30/git-lost-found-and-no-branch&quot;&gt;Mark Guzman best described&lt;/a&gt; what happened:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Little did I know that I had entered the &amp;#8220;(no branch)&amp;#8221; state. At this point I was pretty much gunning to create orphaned blobs, commits and other such items.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So &lt;code&gt;(no branch)&lt;/code&gt; is when &lt;code&gt;HEAD&lt;/code&gt; is a commit that is no longer one of the leading branch commits (which is what it means to be &amp;#8220;on a branch&amp;#8221;). If as in this case I want &lt;code&gt;atompub&lt;/code&gt; to match &lt;code&gt;HEAD&lt;/code&gt;, I have to &lt;code&gt;git merge&lt;/code&gt; the outstanding &lt;code&gt;HEAD&lt;/code&gt; commits over to &lt;code&gt;atompub&lt;/code&gt;. That works fine since the new commits are changesets atop &lt;code&gt;atompub&lt;/code&gt; in the first place; it&amp;#8217;s as though I&amp;#8217;m on a branch of &lt;code&gt;atompub&lt;/code&gt;, only I never &lt;em&gt;explicitly&lt;/em&gt; branched, so it doesn&amp;#8217;t have a name. Instead I have to refer to it by the commit ID.&lt;/p&gt;

&lt;p&gt;As I hadn&amp;#8217;t switched back to the real branch yet, I didn&amp;#8217;t have to recover my nameless &lt;code&gt;HEAD&lt;/code&gt; commit the way Mark did. Instead I could look directly at the log:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;mpaschal@mpaschal-mt:~/svn/mt/git$ git log -1 --pretty=oneline
658b8173ab396c7bb765f990c2bc2fdc7d639c86 Merged all ...
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then switch and merge:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;mpaschal@mpaschal-mt:~/svn/mt/git$ git checkout atompub
Switched to branch &quot;atompub&quot;
mpaschal@mpaschal-mt:~/svn/mt/git$ git merge 658b817
Updating 461f2f7..658b817
Fast forward
  ...
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;It&amp;#8217;s like magic!&lt;sup&gt;2&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;sup&gt;1&lt;/sup&gt; Not actually fun.&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;sup&gt;2&lt;/sup&gt; It&amp;#8217;s a long incantation you have to research to discover, and getting it wrong can have disastrous consequences.&lt;/small&gt;&lt;/p&gt;</description>
  <comments>http://markpasc.livejournal.com/189329.html</comments>
  <category>git</category>
  <lj:security>public</lj:security>
  <lj:reply-count>3</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://markpasc.livejournal.com/188650.html</guid>
  <pubDate>Sat, 20 Sep 2008 21:19:55 GMT</pubDate>
  <link>http://markpasc.livejournal.com/188650.html</link>
  <description>&lt;p&gt;I&amp;#8217;m always eager to believe people who tell me I&amp;#8217;m smart and creative, but is &lt;a href=&quot;http://www.psychologytoday.com/articles/index.php?term=pto-19960701-000033&amp;amp;print=1&quot;&gt;this &lt;em&gt;Psychology Today&lt;/em&gt; article&lt;/a&gt;&lt;sup&gt;1&lt;/sup&gt; some cold reading bullshit or what?&lt;/p&gt;

&lt;p&gt;Or as put by the author: “Here are the 10 antithetical traits often present in creative people that are integrated with each other in a dialectical tension.”&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You&amp;#8217;re energetic, except when you&amp;#8217;re exhausted; you&amp;#8217;re sexually charged, except when you&amp;#8217;re not.&lt;/li&gt;
&lt;li&gt;You&amp;#8217;re smart, but not &lt;em&gt;too&lt;/em&gt; smart, and not always.&lt;/li&gt;
&lt;li&gt;You work hard and play hard.&lt;/li&gt;
&lt;li&gt;You&amp;#8217;re in the here and now, except when you&amp;#8217;re off in your own world.&lt;/li&gt;
&lt;li&gt;You like crowds and company, except when you don&amp;#8217;t.&lt;/li&gt;
&lt;li&gt;You crow about your accomplishments, yet &lt;a href=&quot;http://en.wikipedia.org/wiki/Dunning-Kruger_Syndrome&quot;&gt;you know how much you suck&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;You&amp;#8217;re strong, but have a soft side.&lt;/li&gt;
&lt;li&gt;You have enough experience in your area to make what&amp;#8217;s good even better.&lt;/li&gt;
&lt;li&gt;You&amp;#8217;re both enthusiastic and analytical in your work.&lt;/li&gt;
&lt;li&gt;Your &lt;a href=&quot;http://www.aiga.org/content.cfm/ever-notice&quot;&gt;awareness&lt;/a&gt; in your area of expertise is a blessing and a curse.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If this is what makes you creative, it&amp;#8217;s even more proof of &lt;a href=&quot;http://www.ted.com/index.php/talks/ken_robinson_says_schools_kill_creativity.html&quot;&gt;Ken Robinson&lt;/a&gt;&amp;#8217;s claim that &lt;a href=&quot;http://www.presentationzen.com/presentationzen/2008/09/education-killing-creativity.html&quot;&gt;&lt;em&gt;everyone&lt;/em&gt; can be creative&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;sup&gt;1&lt;/sup&gt; It&amp;#8217;s gratifying enough I forgot &lt;a href=&quot;http://www.43folders.com/2008/08/20/creative-paradox&quot;&gt;where I got the link&lt;/a&gt; before reading it, yet came to a similar conclusion.&lt;/small&gt;&lt;/p&gt;</description>
  <comments>http://markpasc.livejournal.com/188650.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>3</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://markpasc.livejournal.com/188350.html</guid>
  <pubDate>Fri, 05 Sep 2008 16:01:14 GMT</pubDate>
  <link>http://markpasc.livejournal.com/188350.html</link>
  <description>Awesome dinner last night with David and folks for his birthday. Much wine and laughter.&lt;br /&gt;&lt;br /&gt;As dream imagery goes, calling 911 and getting phone trees, someone&apos;s voicemail, hold music, and ultimately the business end of my alarm clock seems like a bad sign.</description>
  <comments>http://markpasc.livejournal.com/188350.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://markpasc.livejournal.com/187825.html</guid>
  <pubDate>Wed, 20 Aug 2008 21:26:26 GMT</pubDate>
  <title>“No such file or directory” checking out gitosis-admin repo (git-shell not on path)</title>
  <link>http://markpasc.livejournal.com/187825.html</link>
  <description>&lt;p&gt;Am I the only person who&amp;#8217;s found git 1.6.0 doesn&amp;#8217;t work with gitosis 0.2? I found a couple references to &lt;a href=&quot;http://gist.github.com/6213&quot;&gt;this error&lt;/a&gt; trying to check out the gitosis-admin project, but no solutions&amp;#8212;at least not the one I had to make up.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;mpaschal@hostname:~$ git clone git@hostname:gitosis-admin.git&lt;br&gt;
Initialized empty Git repository in /home/mpaschal/gitosis-admin/.git/&lt;br&gt;
Traceback (most recent call last):&lt;br&gt;
&amp;nbsp; File &quot;/usr/local/bin/gitosis-serve&quot;, line 8, in &amp;lt;module&amp;gt;&lt;br&gt;
&amp;nbsp; &amp;nbsp; load_entry_point(&apos;gitosis==0.2&apos;, &apos;console_scripts&apos;, &apos;gitosis-serve&apos;)()&lt;br&gt;
&amp;nbsp; File &quot;/usr/local/lib/python2.5/site-packages/gitosis-0.2-py2.5.egg/gitosis/app.py&quot;, line 24, in run&lt;br&gt;
&amp;nbsp; &amp;nbsp; return app.main()&lt;br&gt;
&amp;nbsp; File &quot;/usr/local/lib/python2.5/site-packages/gitosis-0.2-py2.5.egg/gitosis/app.py&quot;, line 38, in main&lt;br&gt;
&amp;nbsp; &amp;nbsp; self.handle_args(parser, cfg, options, args)&lt;br&gt;
&amp;nbsp; File &quot;/usr/local/lib/python2.5/site-packages/gitosis-0.2-py2.5.egg/gitosis/serve.py&quot;, line 192, in handle_args&lt;br&gt;
&amp;nbsp; &amp;nbsp; os.execvp(&apos;git-shell&apos;, [&apos;git-shell&apos;, &apos;-c&apos;, newcmd])&lt;br&gt;
&amp;nbsp; File &quot;/usr/local/lib/python2.5/os.py&quot;, line 353, in execvp&lt;br&gt;
&amp;nbsp; &amp;nbsp; _execvpe(file, args)&lt;br&gt;
&amp;nbsp; File &quot;/usr/local/lib/python2.5/os.py&quot;, line 389, in _execvpe&lt;br&gt;
&amp;nbsp; &amp;nbsp; func(fullname, *argrest)&lt;br&gt;
OSError: [Errno 2] No such file or directory&lt;br&gt;
fatal: The remote end hung up unexpectedly&lt;br&gt;
mpaschal@hostname:~$
&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;gitosis sets up so it runs &lt;code&gt;git-shell&lt;/code&gt; as the &lt;code&gt;git&lt;/code&gt; user&amp;#8217;s login command, but git 1.6.0 apparently installs everything in the &amp;#8220;gitexecdir,&amp;#8221; which by default ends up &lt;code&gt;/usr/local/libexec/git-core&lt;/code&gt;. Which of course is not on the user&amp;#8217;s path. Normally that&amp;#8217;s fine since you write &lt;code&gt;git &lt;em&gt;command&lt;/em&gt;&lt;/code&gt; and &lt;code&gt;/usr/local/bin/git&lt;/code&gt; rewrites that as &lt;code&gt;git-&lt;em&gt;command&lt;/em&gt;&lt;/code&gt;, and &lt;code&gt;/usr/local/bin/git&lt;/code&gt; knows exactly where all those are, but that means you can&amp;#8217;t yourself run &lt;code&gt;git-shell&lt;/code&gt; directly.&lt;/p&gt;

&lt;p&gt;The gitosis directions I was looking at also suggest making &lt;code&gt;/bin/sh&lt;/code&gt; the &lt;code&gt;git&lt;/code&gt; user&amp;#8217;s shell, which means &lt;code&gt;.bash_profile&lt;/code&gt; isn&amp;#8217;t evaluated on login. So I couldn&amp;#8217;t just add &lt;code&gt;/usr/local/libexec/git-core&lt;/code&gt; to &lt;code&gt;git&lt;/code&gt;&amp;#8217;s &lt;code&gt;PATH&lt;/code&gt; (even if I put it in regular &lt;code&gt;.profile&lt;/code&gt;&amp;#8212;dunno if I was goofing it up somehow, or if ssh default commands don&amp;#8217;t start the shell first, or what).&lt;/p&gt;

&lt;p&gt;I gave up and copied &lt;code&gt;git-shell&lt;/code&gt; to &lt;code&gt;/usr/local/bin&lt;/code&gt;, where regular &lt;code&gt;git&lt;/code&gt; lives.&lt;/p&gt;</description>
  <comments>http://markpasc.livejournal.com/187825.html</comments>
  <category>git</category>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://markpasc.livejournal.com/187360.html</guid>
  <pubDate>Thu, 31 Jul 2008 16:17:33 GMT</pubDate>
  <title>good question</title>
  <link>http://markpasc.livejournal.com/187360.html</link>
  <description>&lt;lj-embed id=&quot;3&quot; /&gt;&lt;br /&gt;&lt;br /&gt;I made something up.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.alistapart.com/articles/survey2008&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/markpasc/pic/0001crhp&quot; width=&quot;180&quot; height=&quot;46&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;</description>
  <comments>http://markpasc.livejournal.com/187360.html</comments>
  <category>web</category>
  <category>work</category>
  <lj:security>public</lj:security>
  <lj:reply-count>5</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://markpasc.livejournal.com/187071.html</guid>
  <pubDate>Mon, 14 Jul 2008 15:18:41 GMT</pubDate>
  <link>http://markpasc.livejournal.com/187071.html</link>
  <description>&lt;p&gt;&lt;a href=&quot;http://community.livejournal.com/themissinghat/profile?mode=full&quot;&gt;By way of the previous post&lt;/a&gt;, a thought of the day:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong style=&quot;color: #ff7800&quot;&gt;resoundingsalmon:&lt;/strong&gt; Search Engine Optimization people are evil. They want to eat your fucking soul.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;oic.&lt;/p&gt;</description>
  <comments>http://markpasc.livejournal.com/187071.html</comments>
  <category>internet</category>
  <category>salmon</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://markpasc.livejournal.com/186707.html</guid>
  <pubDate>Mon, 14 Jul 2008 15:04:33 GMT</pubDate>
  <link>http://markpasc.livejournal.com/186707.html</link>
  <description>&lt;p&gt;I would feel better about the latest turn in &lt;em&gt;Twilight Princess&lt;/em&gt; if, when you listened in on the guards in Castle Town, they had a conversation like this one:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;Bell:&lt;/strong&gt; Dammit, I forgot my lunch sack again.&lt;br&gt;
  &lt;strong&gt;Frid:&lt;/strong&gt; Ha, I hear that kid from Ordon will fetch &lt;em&gt;any damn thing.&lt;/em&gt;&lt;br&gt;
  &lt;strong&gt;Bell:&lt;/strong&gt; No shit? Tell him my lunch sack is vital to Hyrule&amp;#8217;s security!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And then they laugh like Tom Nook.&lt;/p&gt;</description>
  <comments>http://markpasc.livejournal.com/186707.html</comments>
  <category>games</category>
  <category>zelda</category>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://markpasc.livejournal.com/186489.html</guid>
  <pubDate>Fri, 11 Jul 2008 21:40:09 GMT</pubDate>
  <title>git equivalent to “svn copy” for forking files with history?</title>
  <link>http://markpasc.livejournal.com/186489.html</link>
  <description>&lt;p&gt;As might be obvious from &lt;a href=&quot;http://markpasc.livejournal.com/186297.html&quot;&gt;my previous post&lt;/a&gt;, I don&amp;#8217;t yet grok git. (It took three tries over about a week to figure out what I posted there.) My other major question as a dual git/subversion user is &lt;strong&gt;how do I &lt;code&gt;svn copy&lt;/code&gt; in git?&lt;/strong&gt; I don&amp;#8217;t see that adequately answered anywhere.&lt;/p&gt;

&lt;p&gt;The most common use of &lt;code&gt;svn copy&lt;/code&gt; is to branch, which is precisely what I &lt;em&gt;don&amp;#8217;t&lt;/em&gt; mean here. &lt;code&gt;git&lt;/code&gt; seems to promote branches to a first-order concept, in that the entire git repository exists across branches, and there are specific commands for branching and merging. You can&amp;#8217;t have a nonstandard trunk/branch/tag hierarchy like you do sometimes in subversion, because there &lt;em&gt;is&lt;/em&gt; no hierarchy. git branches are completely orthogonal to your file structure.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.newartisans.com/blog_files/git.from.bottom.up.php&quot;&gt;&lt;em&gt;Git From the Bottom Up&lt;/em&gt;&lt;/a&gt; suggests (perhaps a little facetiously) phrasing your problem in git&amp;#8217;s language in order to understand:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Understanding commits is the key to grokking Git. You&amp;#8217;ll know you have reached the Zen plateau of branching wisdom when your mind contains only commit topologies, leaving behind the confusion of branches, tags, local and remote repositories&amp;#8230;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In these terms, you find branches are really names for other commits besides the master head main trunk commit. It&amp;#8217;s not really that branches are first-order things, but that branches are names for commits instead of files. Either way, they&amp;#8217;re completely orthogonal to the filesystem.&lt;/p&gt;

&lt;p&gt;Looking again just now for the answer to my question, I found &lt;a href=&quot;http://www.gelato.unsw.edu.au/archives/git/0612/34518.html&quot;&gt;this thread&lt;/a&gt;, which illustrates git&amp;#8217;s current position on copying, and how it&amp;#8217;s contrary to this second use of &lt;code&gt;svn copy&lt;/code&gt; that I&amp;#8217;m trying to figure out:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;blockquote&gt;
    &lt;p&gt;svn copy::&lt;br&gt;
    Duplicate something in working copy or repository, remembering history.&lt;br&gt;
    cp A B; git add B::&lt;br&gt;
    Git doesn&amp;#8217;t have a direct equivalent of svn copy.  It&amp;#8217;s arguable whether
    it needs it once the user knows they can git-add so easily.&lt;/p&gt;
    
    &lt;p&gt;Git wins.  Git&amp;#8217;s ability to detect copies after-the-fact, mean that a
    git-copy isn&amp;#8217;t necessary.&lt;/p&gt;
  &lt;/blockquote&gt;
  
  &lt;p&gt;svn copy is more like git checout -b, i.e. it&amp;#8217;s primary purpose is not 
  to &amp;#8220;copy&amp;#8221; things, it is to create branches. You generally do not copy
  code (I hope).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Well, in fact, I often &lt;em&gt;do&lt;/em&gt; copy code with &lt;code&gt;svn&lt;/code&gt;, because I want to &lt;strong&gt;fork a file with history&lt;/strong&gt;. Often I discover when I&amp;#8217;m working on (say) some class, I&amp;#8217;ve accreted unrelated functionality around the class&amp;#8217;s real work, and I need to separate it out. Obviously I can do that just fine and check both parts in, but if I na&amp;iuml;vely fork one file in twain&amp;#8212;by doing a real file copy and &lt;code&gt;add&lt;/code&gt;ing the new file, say&amp;#8212;the new one will lose all its history. The first commit git will know about for it is the one where it appears fully formed from Zeus&amp;#8217; head, though it happens to share an equivalent blob with some other file in the commit.&lt;/p&gt;

&lt;p&gt;In git terms, you can see why it&amp;#8217;s not obvious how to copy with history: to duplicate &lt;code&gt;svn copy &lt;em&gt;A&lt;/em&gt; &lt;em&gt;B&lt;/em&gt;&lt;/code&gt;, you want git to understand when you ask about &lt;em&gt;B&lt;/em&gt;&amp;#8217;s history to include all of &lt;em&gt;A&lt;/em&gt;&amp;#8217;s previous commits. It&amp;#8217;s as though you want to change all &lt;em&gt;A&lt;/em&gt;&amp;#8217;s commits retroactively to include &lt;em&gt;B&lt;/em&gt;, sort of. It&amp;#8217;s more about the behavior of the tools than anything you can articulate in a git repository&amp;#8217;s data.&lt;/p&gt;

&lt;p&gt;So I looked for behavior: lo and behold, Andy Parkin&amp;#8217;s message above notes that git can &amp;#8220;detect copies after-the-fact,&amp;#8221; and I guess he means for example &lt;code&gt;git log&lt;/code&gt;&amp;#8217;s &lt;code&gt;-C&lt;/code&gt; and &lt;code&gt;--find-copies-harder&lt;/code&gt; options. According to the manual, this seems to be exactly the behavior I need:&lt;/p&gt;

&lt;dl&gt;
    &lt;dt&gt;&lt;code&gt;-C&lt;/code&gt;&lt;/dt&gt;
    &lt;dd&gt;&lt;code&gt;Detect copies as well as renames. See also --find-copies-harder.&lt;/code&gt;&lt;/dd&gt;
    &lt;dt&gt;&lt;code&gt;--find-copies-harder&lt;/code&gt;&lt;/dt&gt;
    &lt;dd&gt;&lt;code&gt;
       For performance reasons, by default, -C option finds copies only
       if the original file of the copy was modified in the same
       changeset. This flag makes the command inspect unmodified files
       as candidates for the source of copy. This is a very expensive
       operation for large projects, so use it with caution. Giving
       more than one -C option has the same effect.
   &lt;/code&gt;&lt;/dd&gt;
&lt;/dl&gt;

&lt;p&gt;&lt;strong&gt;If only it worked that way.&lt;/strong&gt; See &lt;a href=&quot;http://ttyshare.com/rec/markpasc/40421163/&quot;&gt;the terminalcast I did showing&lt;/a&gt; what I mean: once I duplicate the file, &lt;code&gt;svn log&lt;/code&gt; doesn&amp;#8217;t show &lt;code&gt;fred&lt;/code&gt;&amp;#8217;s initial commit in &lt;code&gt;wilma&lt;/code&gt;&amp;#8217;s history, even with the &lt;code&gt;-C&lt;/code&gt; or &lt;code&gt;--find-copies-harder&lt;/code&gt; flags.&lt;/p&gt;

&lt;p&gt;I would be delighted to be wrong, but as far as I can tell, it&amp;#8217;s &lt;em&gt;not possible&lt;/em&gt; to fork files in &lt;code&gt;git&lt;/code&gt;, while it&amp;#8217;s trivial with &lt;code&gt;svn copy&lt;/code&gt;.&lt;/p&gt;</description>
  <comments>http://markpasc.livejournal.com/186489.html</comments>
  <category>code</category>
  <category>subversion</category>
  <category>git</category>
  <lj:security>public</lj:security>
  <lj:reply-count>11</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://markpasc.livejournal.com/186297.html</guid>
  <pubDate>Mon, 07 Jul 2008 21:16:02 GMT</pubDate>
  <title>Moving commits from git to subversion</title>
  <link>http://markpasc.livejournal.com/186297.html</link>
  <description>&lt;p&gt;It&amp;#8217;s fairly well documented what to do if you have a subversion repository and want to develop on it with git. What if you have a project you started in a git repository, but now need to publish it to a subversion repo?&lt;/p&gt;

&lt;p&gt;After several attempts and resets, this seems to be what you have to do to check a project you built with local &lt;code&gt;git&lt;/code&gt; into an arbitrary place in a subversion repository.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Make a new &lt;code&gt;git&lt;/code&gt; repo: &lt;code&gt;mkdir ~/import; cd ~/import; git init&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Make the new remote directory in the svn repo: &lt;code&gt;svn mkdir http://example.com/proj/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Link up with the empty path using &lt;code&gt;git-svn&lt;/code&gt;: &lt;code&gt;git svn clone -T &apos;&apos; http://example.com/proj/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Add your original repo as a remote: &lt;code&gt;git remote add dev file:///home/username/work/proj&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git pull dev master&lt;/code&gt; to pull in all the original git repo&amp;#8217;s commits.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git svn rebase&lt;/code&gt; to rebase all the commits on top of the svn commit.&lt;/li&gt;
&lt;li&gt;In my case, the rebase halted on some commits in the git history where I added files. I had to &lt;code&gt;git add&lt;/code&gt; the files manually, then &lt;code&gt;git rebase --continue&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git svn dcommit&lt;/code&gt; (or with &lt;code&gt;-n&lt;/code&gt; to check&amp;#8230; but it&amp;#8217;s just a list of commit IDs, so it sure didn&amp;#8217;t make me feel that much better about doing it)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can then &lt;em&gt;really&lt;/em&gt; check it worked by comparing the subversion content to your git repo:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;code&gt;cp -R ~/work/proj proj-git&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rm -r proj-git/.git&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;svn export http://example.com/proj/ proj-svn&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;diff -rub proj-svn proj-git&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;As usual in UNIX, silence is golden.&lt;/p&gt;</description>
  <comments>http://markpasc.livejournal.com/186297.html</comments>
  <category>code</category>
  <category>subversion</category>
  <category>git</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://markpasc.livejournal.com/185852.html</guid>
  <pubDate>Thu, 19 Jun 2008 15:19:41 GMT</pubDate>
  <title>New light</title>
  <link>http://markpasc.livejournal.com/185852.html</link>
  <description>&lt;p&gt;Our intranet&amp;#8217;s page header is in Helvetica Neue Light. Now that I&amp;#8217;m using Firefox 3 again, I noticed it wasn&amp;#8217;t rendering right; it was regular Helvetica. Firefox 3 has better font rendering, so I knew it&amp;#8217;s supposed to be &lt;em&gt;able&lt;/em&gt; to use it. Why didn&amp;#8217;t it?&lt;/p&gt;

&lt;p&gt;For it to show up in Safari, you have to put the typeface name and the variant in the &lt;code&gt;font-family&lt;/code&gt;, and spell it a little weird, like so:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;font-family: &quot;HelveticaNeue-Light&quot;;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Some Googling says you can use Helvetica Neue Light in Firefox if you spell it out like a normal font name:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;font-family: &quot;Helvetica Neue Light&quot;;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I assume that works in Firefox 2, but it doesn&amp;#8217;t seem to in Firefox 3. After enough banging on it, I found Firefox 3 (reasonably) wants you to specify the font in &lt;code&gt;font-family&lt;/code&gt; and the weight variant the real CSS way, with &lt;a href=&quot;http://www.blooberry.com/indexdot/css/properties/font/fontweight.htm&quot;&gt;&lt;code&gt;font-weight&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;font-family: &quot;Helvetica Neue&quot;;
font-weight: 100;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;So to cover all the bases, in practice you&amp;#8217;d write:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;font-family: &quot;HelveticaNeue-Light&quot;, &quot;Helvetica Neue Light&quot;,
             &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;
font-weight: 100;
&lt;/code&gt;&lt;/pre&gt;</description>
  <comments>http://markpasc.livejournal.com/185852.html</comments>
  <category>css</category>
  <category>firefox</category>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://markpasc.livejournal.com/185586.html</guid>
  <pubDate>Mon, 16 Jun 2008 16:02:45 GMT</pubDate>
  <title>Firefox 3</title>
  <link>http://markpasc.livejournal.com/185586.html</link>
  <description>&lt;p&gt;&lt;a href=&quot;http://www.spreadfirefox.com/node&amp;amp;id=0&amp;amp;t=269&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;Download Day&quot; title=&quot;Download Day&quot; src=&quot;http://www.spreadfirefox.com/files/images/affiliates_banners/sns_badge1_en.png&quot; style=&quot;float: right&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://kesh.livejournal.com/277848.html&quot;&gt;Kesh&amp;#8217;s post&lt;/a&gt; reminds me: &lt;a href=&quot;http://www.spreadfirefox.com/en-US/worldrecord/?from=sfx&amp;amp;uid=4&amp;amp;aid=2670660&quot;&gt;Firefox 3 comes out tomorrow, Tuesday the 17th&lt;/a&gt;&amp;#8212;but I&amp;#8217;ve already &lt;a href=&quot;http://www.mozilla.com/en-US/firefox/all-rc.html&quot;&gt;been using it&lt;/a&gt;. Despite &lt;a href=&quot;http://markpasc.livejournal.com/182146.html&quot;&gt;overcoming the lack of Greasemonkey and Firebug&lt;/a&gt;, Safari still has no &lt;a href=&quot;http://www.dria.org/wordpress/archives/2008/04/17/628/&quot;&gt;Awesomebar&lt;/a&gt;, and I can happily report that since upgrading to Firefox 3 rc2 (now rc3) and Firefox 3 versions of my extensions (Firebug, Greasemonkey, and Adblock Plus), I haven&amp;#8217;t noticed any crashing, either.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;That first link is about &lt;a href=&quot;http://www.spreadfirefox.com/en-US/worldrecord/?from=sfx&amp;amp;uid=4&amp;amp;aid=2670660&quot;&gt;Spread Firefox&amp;#8217;s Download Day 2008&lt;/a&gt;, the attempt to get Firefox into the Guinness World Record book for &amp;#8220;most software downloads in 24 hours.&amp;#8221;&lt;/li&gt;
&lt;li&gt;Deb Richardson compiled &lt;a href=&quot;http://www.dria.org/wordpress/archives/2008/06/12/655/&quot;&gt;a field guide to Firefox 3&lt;/a&gt; showing off all the new features and improvements.&lt;/li&gt;
&lt;li&gt;If you don&amp;#8217;t want to read, watch &lt;a href=&quot;http://people.mozilla.com/~beltzner/overview-of-firefox3.swf&quot;&gt;Mike Beltzner&amp;#8217;s screencast guide&lt;/a&gt; to the major features instead.&lt;/li&gt;
&lt;li&gt;The improved default theme for OS X is more OS X-y, but if it&amp;#8217;s not quite OS X-y enough for you with all the rounded buttons and whatnot, try one of &lt;a href=&quot;http://www.takebacktheweb.org/&quot;&gt;the GrApple themes&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Lastly, feel for &lt;a href=&quot;http://xb95.livejournal.com/595015.html&quot;&gt;Mark Smith&lt;/a&gt;, who&amp;#8217;s working at Mozilla, supporting all this craziness.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you aren&amp;#8217;t going to use Firefox 3, there&amp;#8217;s still good news: even at $0, the market for browsers is competitive again. Safari is a better browser because of Firefox, and Firefox 3 is a better browser because of Safari. Here&amp;#8217;s looking forward to a Safari 4 that makes me want to switch again! (But hopefully not too soon.)&lt;/p&gt;</description>
  <comments>http://markpasc.livejournal.com/185586.html</comments>
  <category>mozilla</category>
  <category>awesomebar</category>
  <category>firefox 3</category>
  <lj:security>public</lj:security>
  <lj:reply-count>3</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://markpasc.livejournal.com/184401.html</guid>
  <pubDate>Fri, 30 May 2008 17:19:08 GMT</pubDate>
  <title>CommitBit</title>
  <link>http://markpasc.livejournal.com/184401.html</link>
  <description>&lt;p&gt;Hmm, my test &lt;a href=&quot;http://code.bestpractical.com/project/CommitBit&quot;&gt;CommitBit&lt;/a&gt; install doesn&amp;#8217;t have the right CSS at all. Am I missing something? I installed CommitBit from subversion with Jifty from CPAN, and it doesn&amp;#8217;t look anything like &lt;a href=&quot;http://code.bestpractical.com/&quot;&gt;Best Practical&amp;#8217;s&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://pics.livejournal.com/markpasc/pic/0001a5q5&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/markpasc/pic/0001a5q5/s320x240&quot; width=&quot;301&quot; height=&quot;240&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Jifty seems to do this &lt;a href=&quot;http://search.cpan.org/~sartak/Jifty-0.80408/lib/Jifty/Manual/UsingCSSandJS.pod#USING_AND_EXPANDING_CSS&quot;&gt;weird CSS compilation thing&lt;/a&gt; so I can&amp;#8217;t tell where the CSS is supposed to be coming from, either.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; yeah, Jesse&amp;#8217;s suggestion to use the CPAN version of CommitBit works great. Thanks!&lt;/p&gt;</description>
  <comments>http://markpasc.livejournal.com/184401.html</comments>
  <category>code</category>
  <category>commitbit</category>
  <category>best practical</category>
  <category>perl</category>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://markpasc.livejournal.com/183861.html</guid>
  <pubDate>Wed, 21 May 2008 20:15:25 GMT</pubDate>
  <title>TAP in pyparsing</title>
  <link>http://markpasc.livejournal.com/183861.html</link>
  <description>&lt;p&gt;Paul McGuire, author of pyparsing, was &lt;a href=&quot;http://markpasc.livejournal.com/182326.html?thread=551990#t551990&quot;&gt;nice enough&lt;/a&gt; to write up &lt;a href=&quot;http://pyparsing.wikispaces.com/space/showimage/TAP.py&quot;&gt;a TAP parser using it&lt;/a&gt; for comparison to &lt;a href=&quot;http://markpasc.livejournal.com/182326.html&quot;&gt;my yeanpypa attempt&lt;/a&gt;. A few days earlier I had hacked up my own pyparsing version too, as pyparsing has a few features that seemed like it would make a more forgiving parser. Here&amp;#8217;s the pyparsing version I wrote:&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;cutid1&quot;&gt;&lt;/a&gt;&lt;code&gt;from pyparsing import *&lt;br&gt;
&lt;br&gt;
non_zero_digits = &apos;123456789&apos;&lt;br&gt;
digits = &apos;0&apos; + non_zero_digits&lt;br&gt;
&lt;br&gt;
non_zero_number = Combine(Word(non_zero_digits, digits))&lt;br&gt;
&lt;br&gt;
plan = Combine(Suppress(Literal(&apos;1..&apos;)) + non_zero_number)&lt;br&gt;
test_num &amp;nbsp; &amp;nbsp;= non_zero_number(&apos;num&apos;)&lt;br&gt;
description = Combine(NotAny(digits) + OneOrMore(CharsNotIn(&apos;#\n&apos;) | Literal(&apos;\\#&apos;)))(&apos;description&apos;)&lt;br&gt;
directive &amp;nbsp; = Suppress(Literal(&apos;#&apos;)) + Optional(CaselessLiteral(&apos;skip&apos;)(&apos;skip&apos;) | CaselessLiteral(&apos;todo&apos;)(&apos;todo&apos;)) + Combine(Regex(r&apos;(?s).&apos;))(&apos;directive&apos;)&lt;br&gt;
result = Literal(&apos;not ok&apos;)(&apos;notok&apos;) | Literal(&apos;ok&apos;)(&apos;ok&apos;)&lt;br&gt;
preamble = ZeroOrMore(~result + SkipTo(OneOrMore(LineEnd()), include=True))&lt;br&gt;
test_line = result + Optional(test_num + Optional(description) + Optional(directive))&lt;br&gt;
test = Group(Combine(preamble)(&apos;preamble&apos;) + test_line)&lt;br&gt;
&lt;br&gt;
def stripLeadingDash(tokens):&lt;br&gt;
 &amp;nbsp; &amp;nbsp;tokens[0] = re.sub(r&apos;^-\s*&apos;, &apos;&apos;, tokens[0])&lt;br&gt;
 &amp;nbsp; &amp;nbsp;tokens[&apos;description&apos;] = re.sub(r&apos;^-\s*&apos;, &apos;&apos;, tokens[&apos;description&apos;])&lt;br&gt;
&lt;br&gt;
description.addParseAction(stripLeadingDash)&lt;br&gt;
&lt;br&gt;
tap = (plan(&apos;plan&apos;) &amp;amp; Group(OneOrMore(test))(&apos;tests&apos;)) | (&apos;1..0&apos; + directive)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Some interesting features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I used the pydoc and &lt;a href=&quot;http://pyparsing.wikispaces.com/Examples&quot;&gt;the examples&lt;/a&gt; instead of the actual manual, so I didn&amp;#8217;t see &lt;code&gt;setDefaultWhitespaceChars&lt;/code&gt; that Paul used. I had to use &lt;code&gt;CharsNotIn(&apos;#\n&apos;)&lt;/code&gt; in &lt;code&gt;description&lt;/code&gt; and &lt;code&gt;(?s)&lt;/code&gt; in the &lt;code&gt;directive&lt;/code&gt; regexp so the dot wouldn&amp;#8217;t match the &lt;code&gt;\n&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;I used a parse action to strip the optional leading dash from &lt;code&gt;description&lt;/code&gt;, rather than try to match it. Looking back now I don&amp;#8217;t see why I couldn&amp;#8217;t include the &lt;code&gt;Optional(&apos;-&apos;)&lt;/code&gt; on the front, but it seemed to make sense when I wrote it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using &lt;code&gt;Combine&lt;/code&gt; and the naming feature means I get immediately useful results with this parser, unlike the yeanpypa parser, which ends up being more of a tokenizer.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; from tap_parser import tap
&amp;gt;&amp;gt;&amp;gt; test1 = &quot;&quot;&quot;\                                                                                                          
... 1..4                                                                                                                  
... ok 1 - Input file opened                                                                                              
... not ok 2 - First line of the input valid                                                                              
... ok 3 - Read the rest of the file                                                                                      
... not ok 4 - Summarized correctly # TODO Not written yet
... &quot;&quot;&quot;
&amp;gt;&amp;gt;&amp;gt; res = tap.parseString(test1)
&amp;gt;&amp;gt;&amp;gt; res.plan
&apos;4&apos;
&amp;gt;&amp;gt;&amp;gt; res.tests[0].ok
&apos;ok&apos;
&amp;gt;&amp;gt;&amp;gt; res.tests[1].ok
&apos;&apos;
&amp;gt;&amp;gt;&amp;gt; res.tests[1].notok
&apos;not ok&apos;
&amp;gt;&amp;gt;&amp;gt; res.tests[1].description
&apos;First line of the input valid&apos;
&amp;gt;&amp;gt;&amp;gt; [res.tests[3][f] for f in (&apos;num&apos;, &apos;todo&apos;, &apos;description&apos;)]
[&apos;4&apos;, &apos;todo&apos;, &apos;Summarized correctly &apos;]
&amp;gt;&amp;gt;&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Paul still uses a function in his example to massage the results into output, but my results map almost exactly into the Django model objects I planned to make.&lt;/p&gt;

&lt;p&gt;On the other hand, mine fails Paul&amp;#8217;s &lt;code&gt;test3&lt;/code&gt; example, which is &lt;a href=&quot;http://search.cpan.org/~petdance/TAP-1.00/TAP.pm#Creative_liberties&quot;&gt;certainly proper TAP&lt;/a&gt;. Seems to not be handling post-planned results due to my attempted use of &lt;code&gt;Each&lt;/code&gt; (the &lt;code&gt;&amp;amp;&lt;/code&gt; operator). Hmm.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Oh, no, it was the missing test numbers that made it barf. Somehow I&amp;#8217;d read into the TAP spec that a test number was required if there was a description&amp;#8230; or at least accidentally written that into the parser. Changing &lt;code&gt;test_line&lt;/code&gt;&amp;#8217;s definition thusly made &lt;a href=&quot;http://markpasc.org/lj/200805/tap_parser_test.py&quot;&gt;the tests&lt;/a&gt; work (though I&amp;#8217;m only testing one stream for correctness so far):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;test_line = result + Optional(test_num) +
            Optional(description) + Optional(directive)
&lt;/code&gt;&lt;/pre&gt;</description>
  <comments>http://markpasc.livejournal.com/183861.html</comments>
  <category>tap</category>
  <category>pyparsing</category>
  <category>code</category>
  <category>python</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://markpasc.livejournal.com/183493.html</guid>
  <pubDate>Mon, 12 May 2008 01:16:44 GMT</pubDate>
  <title>Boxed</title>
  <link>http://markpasc.livejournal.com/183493.html</link>
  <description>&lt;img src=&quot;http://pics.livejournal.com/markpasc/pic/00019a4d&quot; width=&quot;133&quot; height=&quot;78&quot; border=&quot;0&quot;&gt;</description>
  <comments>http://markpasc.livejournal.com/183493.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://markpasc.livejournal.com/182746.html</guid>
  <pubDate>Thu, 01 May 2008 19:19:30 GMT</pubDate>
  <title>Fair&apos;s fair</title>
  <link>http://markpasc.livejournal.com/182746.html</link>
  <description>&lt;p&gt;Somehow I got onto WebKit nightlies instead of stable Safari 3, and even after uninstalling SIMBL and losing magic Greasemonkey powers, it&amp;#8217;s crashy. Just so you know.&lt;/p&gt;</description>
  <comments>http://markpasc.livejournal.com/182746.html</comments>
  <category>safari</category>
  <category>beta</category>
  <category>crash</category>
  <category>webkit</category>
  <category>software</category>
  <category>firefox</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://markpasc.livejournal.com/182326.html</guid>
  <pubDate>Tue, 29 Apr 2008 16:41:46 GMT</pubDate>
  <title>Parsing in Python</title>
  <link>http://markpasc.livejournal.com/182326.html</link>
  <description>&lt;p&gt;I want a &lt;a href=&quot;http://search.cpan.org/~petdance/TAP-1.00/TAP.pm&quot;&gt;TAP&lt;/a&gt; parser in Python, so I tried &lt;a href=&quot;http://www.slash-me.net/dev/snippets/yeanpypa/documentation.html&quot;&gt;yeanpypa&lt;/a&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;from yeanpypa import *

non_zero_number = AnyOf(&apos;123456789&apos;) + ZeroOrMore(digit)
rest_of_line    = OneOrMore(NoneOf(&apos;\n&apos;))

plan = Literal(&apos;1..&apos;) + non_zero_number

todo_directive = Optional(&apos; &apos;) + rest_of_line
skip_reason    = ZeroOrMore(NoneOf(&apos; &apos;)) + Literal(&apos; &apos;)
               + rest_of_line
skip_directive = Optional(&apos; &apos;) + Literal(&apos;# &apos;)
               + Literal(&apos;skip&apos;) + Optional(skip_reason)
directive      = Optional(&apos; &apos;) + Literal(&apos;# &apos;)
               + (skip_directive | todo_directive)

description = Optional(&apos; &apos;) + Optional(&apos;- &apos;)
            + ZeroOrMore(NoneOf(&apos;#\n&apos;))
ok_not_ok   = Literal(&apos;ok&apos;) | Literal(&apos;not ok&apos;)
test_num    = Optional(&apos; &apos;) + non_zero_number

test = ok_not_ok + Optional(test_num)
     + Optional(description) + Optional(directive)

plan_skipped   = Literal(&apos;1..0&apos;) + skip_directive
plan_first_tap = plan + ZeroOrMore(Literal(&apos;\n&apos;) + test)
plan_last_tap  = test + ZeroOrMore(Literal(&apos;\n&apos;) + test)
               + Optional(Literal(&apos;\n&apos;) + plan)

tap = plan_skipped | plan_first_tap | plan_last_tap
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I guess it works, but it feels like writing a regular expression longhand. I would probably also make it more lax if I wrote it as an re, as it would be easier to write &lt;code&gt;\s*-\s*&lt;/code&gt; in the &lt;code&gt;description&lt;/code&gt; rule, say.&lt;/p&gt;</description>
  <comments>http://markpasc.livejournal.com/182326.html</comments>
  <category>tap</category>
  <category>code</category>
  <category>python</category>
  <lj:security>public</lj:security>
  <lj:reply-count>9</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://markpasc.livejournal.com/182146.html</guid>
  <pubDate>Tue, 22 Apr 2008 16:00:33 GMT</pubDate>
  <title>Three things I miss using Safari 3 instead of Firefox 3</title>
  <link>http://markpasc.livejournal.com/182146.html</link>
  <description>&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;http://www.flickr.com/photos/deb-richardson/2421200414/&quot;&gt;The Awesomebar&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Firebug.&lt;/li&gt;
&lt;li&gt;Greasemonkey (and my Noloudtwitter script).&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;A thing I don&amp;#8217;t miss&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Crashing.&lt;/li&gt;
&lt;/ol&gt;</description>
  <comments>http://markpasc.livejournal.com/182146.html</comments>
  <category>safari</category>
  <category>web</category>
  <category>firefox</category>
  <lj:security>public</lj:security>
  <lj:reply-count>10</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://markpasc.livejournal.com/181773.html</guid>
  <pubDate>Sun, 13 Apr 2008 05:06:32 GMT</pubDate>
  <link>http://markpasc.livejournal.com/181773.html</link>
  <description>&lt;p&gt;Install Python 2.5 on the new server from source, because dev Django prefers it and the distribution&amp;#8217;s package is 2.3. Install dev Django from their subversion. Install PIL and flup, from source, because the docs for the app you&amp;#8217;re setting up says it&amp;#8217;ll need them. Grab and build pysvn because the app you&amp;#8217;re setting up &lt;em&gt;will&lt;/em&gt;, in fact, need it. Grab development subversion source, so pysvn will compile against it. Install subversion from source, because the source you built pysvn against is newer than the distribution&amp;#8217;s package. Grab and try to build MySQLdb (the Python library), because although this is a private deployment, it is a deployment, so you might as well not use sqlite, plus you found the Django ORM isn&amp;#8217;t 100% with sqlite anyway (apparently you can&amp;#8217;t re-use a ForeignKey field as a primary key, with sqlite). Find the MySQLdb configurer can&amp;#8217;t find &lt;code&gt;mysql_config&lt;/code&gt;, so it can&amp;#8217;t configure the build. Poke around on your other server, where the app already runs on Django&amp;#8217;s runserver (not for deployment), and rediscover you get &lt;code&gt;mysql_config&lt;/code&gt; from the distribution&amp;#8217;s &amp;#8220;testing&amp;#8221; MySQL 5 package, not the package provided by your company. So reinstall MySQL from the testing repo package. Install &lt;code&gt;mod_python&lt;/code&gt;, because although it&amp;#8217;s a private deployment, it&amp;#8217;s a deployment, and you guess you shouldn&amp;#8217;t use Django&amp;#8217;s runserver. Configure the app to run under &lt;code&gt;mod_python&lt;/code&gt;. Find &lt;code&gt;mod_python&lt;/code&gt; can&amp;#8217;t find the &lt;code&gt;django&lt;/code&gt; package. Find, oh, yeah, the packaged &lt;code&gt;mod_python&lt;/code&gt; will use the packaged Python 2.3, not the manually built 2.5, so it&amp;#8217;s looking for packages under &lt;code&gt;/usr/lib/python2.3&lt;/code&gt;, not &lt;code&gt;/usr/local/lib/python2.5&lt;/code&gt; where &lt;code&gt;django&lt;/code&gt; is actually installed. Try to have &lt;code&gt;mod_python&lt;/code&gt; include 2.5&amp;#8217;s package paths. Find there are, in fact, weird errors that are doubtless more work to fix than just rebuilding &lt;code&gt;mod_python&lt;/code&gt; against Python 2.5.&lt;/p&gt;

&lt;p&gt;Have some sleep, and most of a Saturday.&lt;/p&gt;

&lt;p&gt;Grab and try to build &lt;code&gt;mod_python&lt;/code&gt; from source. Google around to figure out what &lt;code&gt;relocation R_X86_64_32 against &apos;a local symbol&apos; can not be used when making a shared object; recompile with -fPIC&lt;/code&gt; means. Find there&amp;#8217;s a &lt;code&gt;mod_wsgi&lt;/code&gt;, and decide to use it, since Django apps don&amp;#8217;t necessarily use any special &lt;code&gt;mod_python&lt;/code&gt; facilities anyway. Find building &lt;code&gt;mod_wsgi&lt;/code&gt; has precisely the same error. Find the error means that, indeed, you didn&amp;#8217;t build Python 2.5 with shared library support, which both modules need to embed Python in Apache. Rebuild Python 2.5 with the right configure option (&lt;code&gt;--enable-shared&lt;/code&gt;). Install &lt;code&gt;mod_wsgi&lt;/code&gt; from source. Configure Apache for the Django app with &lt;code&gt;mod_wsgi&lt;/code&gt;. Configure the app&amp;#8217;s media uploads directory so it&amp;#8217;ll quit its whining and run.&lt;/p&gt;

&lt;p&gt;See that it runs!&lt;/p&gt;

&lt;p&gt;But remember you want to use LDAP auth for this private deployment.&lt;/p&gt;

&lt;p&gt;Look for how to set up the Django app&amp;#8217;s LDAP backend. Find it&amp;#8217;s only documented in the mailing list post by the author of the original patch. Install the &lt;code&gt;python-ldap&lt;/code&gt; package, as it was noted as required (of course) in the mailing list post. Set up LDAP in the app semi-right but find you can&amp;#8217;t tell, because the app eats all exceptions, the only error it actually shows being &amp;#8220;Invalid username or password.&amp;#8221; Fiddle with the configuration settings, restarting Apache and trying to sign in again. Fix the app to expose the real error, which is that you thinkoed in the app&amp;#8217;s &lt;code&gt;settings_local.py&lt;/code&gt; configuration file: you tried to define &lt;code&gt;AUTHENTICATION_BACKENDS&lt;/code&gt; as a single-item tuple, but you left out the comma that&amp;#8217;s required to turn a string in parentheses into a tuple. Realize also that, huh, the &lt;code&gt;ldap&lt;/code&gt; package is missing. Realize that&amp;#8217;s because (of course) you installed &lt;code&gt;python-ldap&lt;/code&gt; from a package, meaning it&amp;#8217;s installed for the packaged Python 2.3, not your manually built Python 2.5. Grab and try to build &lt;code&gt;python-ldap&lt;/code&gt; from source. Find it doesn&amp;#8217;t build against the &lt;code&gt;openldap-devel&lt;/code&gt; package that came already installed on the server; the package is for OpenLDAP 2.2, but the &lt;code&gt;python-ldap&lt;/code&gt; builder is hardcoded to look for for OpenLDAP 2.3. Try to update OpenLDAP from your distribution&amp;#8217;s testing repo (it has 2.3), but find it &amp;#8220;conflicts&amp;#8221; with the existing &lt;code&gt;openldap&lt;/code&gt; 2.2 packages, and you&amp;#8217;d have to reinstall every damn thing if you removed and reinstalled &lt;code&gt;openldap&lt;/code&gt;. Look for a download for an older version of &lt;code&gt;python-ldap&lt;/code&gt; (the package was 2.0.1 but you were trying to build the new one, 2.3.4). Don&amp;#8217;t find one on the official download site. But it &lt;em&gt;is&lt;/em&gt; a package, so &lt;code&gt;yum search&lt;/code&gt; then Google for a source package. Install the &lt;code&gt;python-ldap&lt;/code&gt; 2.0.1 source package you do find. Untar and build and install &lt;code&gt;python-ldap&lt;/code&gt; 2.0.1 from source. Confirm in the python shell that the &lt;code&gt;ldap&lt;/code&gt; module loads. Try using LDAP to sign into the app again. Find now it &lt;em&gt;outright crashes&lt;/em&gt; with glibc malloc protection faults (&lt;code&gt;double free or corruption (out)&lt;/code&gt; or &lt;code&gt;free(): invalid pointer&lt;/code&gt;). Wonder if all this is &lt;em&gt;really worth it.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Find that, OTOH, these Friday and Saturday nights are somehow &lt;em&gt;still&lt;/em&gt; more satisfying than the preceding week.&lt;/p&gt;</description>
  <comments>http://markpasc.livejournal.com/181773.html</comments>
  <category>let&apos;s go shopping</category>
  <category>unix is hard</category>
  <lj:security>public</lj:security>
  <lj:reply-count>5</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://markpasc.livejournal.com/179906.html</guid>
  <pubDate>Sun, 09 Mar 2008 03:29:59 GMT</pubDate>
  <title>some other obnoxious snowclone</title>
  <link>http://markpasc.livejournal.com/179906.html</link>
  <description>I&apos;m also &lt;a href=&quot;http://mark.vox.com/library/post/i-for-one-welcome-our-new-lcd-overlords.html&quot;&gt;buying a &lt;small&gt;TV&lt;/small&gt;&lt;/a&gt; on Vox if you have any advice to share.</description>
  <comments>http://markpasc.livejournal.com/179906.html</comments>
  <category>buying</category>
  <category>vox</category>
  <category>tv</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://markpasc.livejournal.com/179202.html</guid>
  <pubDate>Thu, 14 Feb 2008 21:56:47 GMT</pubDate>
  <title>24-hour passport people</title>
  <link>http://markpasc.livejournal.com/179202.html</link>
  <description>I can&apos;t recommend needing a passport in less than a week, but if you do anyway, &lt;a href=&quot;http://www.americanpassport.com/&quot;&gt;American Passport Express&lt;/a&gt; got me one in two days. After seeing them high in Google results, I found they were the accepted answers in &lt;a href=&quot;http://ask.metafilter.com/61769/Should-I-trust-passport-expediting-services&quot;&gt;this Ask MeFi thread&lt;/a&gt;, and went with them. I spent most of Monday assembling the full application, getting it certified by an acceptance agent, and fedexing it to them overnight, and I had a passport by 11 &lt;small&gt;AM&lt;/small&gt; Wednesday.</description>
  <comments>http://markpasc.livejournal.com/179202.html</comments>
  <category>passport</category>
  <category>travel</category>
  <lj:security>public</lj:security>
  <lj:reply-count>3</lj:reply-count>
</item>
</channel>
</rss>
