<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 
 <title>Peter's Dance Party</title>
 <link href="http://petersdanceparty.com/blog/atom.xml" rel="self"/>
 <link href="http://petersdanceparty.com/"/>
 <updated>2011-01-20T16:03:51-08:00</updated>
 <id>http://petersdanceparty.com/</id>
 <author>
   <name>Peter Sanford</name>
 </author>

 
 <entry>
   <title>Fear Not</title>
   <link href="http://petersdanceparty.com/2010/10/01/fear-not.html"/>
   <updated>2010-10-01T00:00:00-07:00</updated>
   <id>http://petersdanceparty.com/2010/10/01/fear-not</id>
   <content type="html">&lt;p&gt;Internet is safer when Schneier is at the drums.&lt;/p&gt;

&lt;img src=&quot;/img/schneier_drums.jpg&quot;/&gt;
</content>
 </entry>
 
 <entry>
   <title>Recover Ubuntu encrypted private directory</title>
   <link href="http://petersdanceparty.com/2010/09/19/recover-ubuntu-encrypted-private-directory.html"/>
   <updated>2010-09-19T00:00:00-07:00</updated>
   <id>http://petersdanceparty.com/2010/09/19/recover-ubuntu-encrypted-private-directory</id>
   <content type="html">&lt;p&gt;One of my old machines died this past week. Nothing critical on it except for a few documents that were living in my encrypted private directory. The hard drives weren't the point though, so I wasn't too concerned about recovery.&lt;/p&gt;
&lt;p&gt;When you first create your encrypted directory, you are given a recovery key. It is recommended that you write this down it keep somewhere safe. I didn't see any point in doing that; either the disk will die and I won't be able to recover anything, or I will be able to use the same mechanism the system uses to get that key.&lt;/p&gt;
&lt;p&gt;That key is stored in ~/.ecryptfs/wrapped-passphrase if you only have ~/Private encrypted or /home/.ecryptfs/$USERNAME/.ecryptfs/wrapped-passphrase if you are encrypting your entire home directory. This file is encrypted using your normal login password. You can decrypt it with the command &lt;tt&gt;ecryptfs-unwrap-passphrase&lt;/tt&gt;. That will give you the passphrase needed to mount your private directory: &lt;tt&gt;mount -t ecryptfs .Private Private&lt;/tt&gt;.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Old CS Notes</title>
   <link href="http://petersdanceparty.com/2010/07/11/old-cs-notes.html"/>
   <updated>2010-07-11T00:00:00-07:00</updated>
   <id>http://petersdanceparty.com/2010/07/11/old-cs-notes</id>
   <content type="html">&lt;h2&gt;Carry Look-ahead Adder&lt;/h2&gt;
&lt;a href=&quot;http://www.flickr.com/photos/psanford/4783676785/&quot; title=&quot;Carry Lookahead Adder by psanford, on Flickr&quot;&gt;&lt;img src=&quot;http://farm5.static.flickr.com/4080/4783676785_74e8511201.jpg&quot; width=&quot;500&quot; height=&quot;333&quot; alt=&quot;Carry Lookahead Adder&quot; /&gt;&lt;/a&gt;

&lt;h2&gt;Binary Integer Division&lt;/h2&gt;
&lt;a href=&quot;http://www.flickr.com/photos/psanford/4783677143/&quot; title=&quot;Integer Division by psanford, on Flickr&quot;&gt;&lt;img src=&quot;http://farm5.static.flickr.com/4141/4783677143_d7638df7ee.jpg&quot; width=&quot;333&quot; height=&quot;500&quot; alt=&quot;Integer Division&quot; /&gt;&lt;/a&gt;
&lt;p&gt;Next time I need to do binary integer division by hand I'm sure this will be useful. It could also serve as a hilarious interview question.&lt;/p&gt;


&lt;h2&gt;Lambda Calculus&lt;/h2&gt;
&lt;a href=&quot;http://www.flickr.com/photos/psanford/4784309796/&quot; title=&quot;Lambda Calculus by psanford, on Flickr&quot;&gt;&lt;img src=&quot;http://farm5.static.flickr.com/4138/4784309796_f87b76593d.jpg&quot; width=&quot;333&quot; height=&quot;500&quot; alt=&quot;Lambda Calculus&quot; /&gt;&lt;/a&gt;
</content>
 </entry>
 
 <entry>
   <title>Emacs variable eval-expression-print-length</title>
   <link href="http://petersdanceparty.com/blog/show/emacs-variable-eval-expression-print-length.html"/>
   <updated>2009-04-12T00:00:00-07:00</updated>
   <id>http://petersdanceparty.com/blog/show/emacs-variable-eval-expression-print-length</id>
   <content type="html">&lt;p&gt;Often I'll use (pp) or (message) to inspect a data structure in elisp. For example lets say I have a list l: &lt;/p&gt;&lt;code&gt;
(setq l '(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15))
(message  l)
 =&gt; (1 2 3 4 5 6 7 8 9 10 11 12 ...)
&lt;/code&gt;
&lt;br/&gt;
&lt;p&gt;Often times I want to see the entire list instead of the truncated version. That's where eval-expression-print-length comes in. Setting this variable to nil results in the entire list being printed.&lt;/p&gt;
&lt;code&gt;
(message &quot;%s&quot; eval-expression-print-length)
 =&gt; 12
(setq eval-expression-print-length nil)
(message &quot;%s&quot; l)
 =&gt; (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)
&lt;/code&gt;


</content>
 </entry>
 
 <entry>
   <title>Interesting Links for 01-19-2009</title>
   <link href="http://petersdanceparty.com/blog/show/interesting-links-for-1-19-29.html"/>
   <updated>2009-01-20T00:00:00-08:00</updated>
   <id>http://petersdanceparty.com/blog/show/interesting-links-for-1-19-29</id>
   <content type="html">&lt;ul&gt;

  &lt;li&gt;&lt;a href=&quot;http://github.com/psanford/emacs-oauth/tree/master&quot;&gt;emacs-oauth&lt;/a&gt; 
  
     &lt;br&gt;Finally got oauth.el released.
  
  &lt;/li&gt;

&lt;/ul&gt;


</content>
 </entry>
 
 <entry>
   <title>Interesting Links for 01-18-2009</title>
   <link href="http://petersdanceparty.com/blog/show/interesting-links-for-1-18-29.html"/>
   <updated>2009-01-19T00:00:00-08:00</updated>
   <id>http://petersdanceparty.com/blog/show/interesting-links-for-1-18-29</id>
   <content type="html">&lt;ul&gt;

  &lt;li&gt;&lt;a href=&quot;http://www.pastemagazine.com/action/paste_station/view/1318/music/my_brightest_diamond_clare_the_reasons_moon_river_ice_ice_baby&quot;&gt;My Brightest Diamond, Clare &amp; the Reasons - &quot;Moon River &amp; Ice Ice Baby&quot;&lt;/a&gt; 
  
     &lt;br&gt;My Brightest Diamond...Amazing
  
  &lt;/li&gt;

&lt;/ul&gt;


</content>
 </entry>
 
 <entry>
   <title>Interesting Links for 01-16-2009</title>
   <link href="http://petersdanceparty.com/blog/show/interesting-links-for-1-16-29.html"/>
   <updated>2009-01-17T00:00:00-08:00</updated>
   <id>http://petersdanceparty.com/blog/show/interesting-links-for-1-16-29</id>
   <content type="html">&lt;ul&gt;

  &lt;li&gt;&lt;a href=&quot;http://money.cnn.com/news/newsfeeds/articles/marketwire/0464786.htm&quot;&gt;Aruba Networks Introduces PCI Compliance Reporting in New AirWave Wireless Management Suite 6.2&lt;/a&gt; 
  
  &lt;/li&gt;

&lt;/ul&gt;


</content>
 </entry>
 
 <entry>
   <title>Emacs function of the day: (make-indirect-buffer)</title>
   <link href="http://petersdanceparty.com/blog/show/emacs-function-of-the-day-make-indirect-buffer.html"/>
   <updated>2009-01-17T00:00:00-08:00</updated>
   <id>http://petersdanceparty.com/blog/show/emacs-function-of-the-day-make-indirect-buffer</id>
   <content type="html">&lt;code&gt;(make-indirect-buffer &lt;span style=&quot;font-style: italic;&quot;&gt;base-buffer&lt;/span&gt; &lt;span style=&quot;font-style: italic;&quot;&gt;name&lt;/span&gt; &amp;amp;optional &lt;span style=&quot;font-style: italic;&quot;&gt;clone&lt;/span&gt;)
&lt;br/&gt;
Create and return an indirect buffer for buffer &lt;span style=&quot;font-style: italic;&quot;&gt;base-buffer&lt;/span&gt;, named &lt;span style=&quot;font-style: italic;&quot;&gt;name&lt;/span&gt;.
&lt;span style=&quot;font-style: italic;&quot;&gt;base-buffer&lt;/span&gt; should be a live buffer, or the name of an existing buffer.
&lt;span style=&quot;font-style: italic;&quot;&gt;name&lt;/span&gt; should be a string which is not the name of an existing buffer.
Optional argument &lt;span style=&quot;font-style: italic;&quot;&gt;clone&lt;/span&gt; non-nil means preserve &lt;span style=&quot;font-style: italic;&quot;&gt;base-buffer&lt;/span&gt;'s state,
such as major and minor modes, in the indirect buffer.
&lt;span style=&quot;font-style: italic;&quot;&gt;clone&lt;/span&gt; nil means the indirect buffer's state is reset to default values.
&lt;/code&gt;
&lt;br/&gt;
&lt;p&gt;Ran across this function today. Occasionally I want to have the same file open to different locations in different frames. You can do this, but when you change buffers in one of those frames, you lose the location of your point. (make-indirect-buffer) solves this problem quite nicely. &lt;/p&gt;
&lt;p&gt;Its always fun to learn a new useful emacs function.&lt;/p&gt;


</content>
 </entry>
 
 <entry>
   <title>Interesting Links for 01-08-2009</title>
   <link href="http://petersdanceparty.com/blog/show/interesting-links-for-1-8-29.html"/>
   <updated>2009-01-09T00:00:00-08:00</updated>
   <id>http://petersdanceparty.com/blog/show/interesting-links-for-1-8-29</id>
   <content type="html">&lt;ul&gt;

  &lt;li&gt;&lt;a href=&quot;http://www.firstthings.com/article.php3?id_article=5312&quot;&gt;Richard John Neuhaus, 1936-2009&lt;/a&gt; 
  
  &lt;/li&gt;

&lt;/ul&gt;


</content>
 </entry>
 
 <entry>
   <title>Interesting Links for 01-07-2009</title>
   <link href="http://petersdanceparty.com/blog/show/interesting-links-for-1-7-29.html"/>
   <updated>2009-01-08T00:00:00-08:00</updated>
   <id>http://petersdanceparty.com/blog/show/interesting-links-for-1-7-29</id>
   <content type="html">&lt;ul&gt;

  &lt;li&gt;&lt;a href=&quot;http://www.firstthings.com/article.php3?id_article=5312&quot;&gt;Richard John Neuhaus, 1936-2009&lt;/a&gt; 
  
  &lt;/li&gt;

  &lt;li&gt;&lt;a href=&quot;http://www.flickr.com/photos/katieweber/3172841852/&quot;&gt;Airwave's New Office Space&lt;/a&gt; 
  
     &lt;br&gt;Video of our new space before we moved in. Nothing was magnetted  to the ceiling when the video was taken.
  
  &lt;/li&gt;

&lt;/ul&gt;


</content>
 </entry>
 
 <entry>
   <title>Interesting Links for 2009-01-01</title>
   <link href="http://petersdanceparty.com/blog/show/interesting-links-for-29-1-1.html"/>
   <updated>2009-01-02T00:00:00-08:00</updated>
   <id>http://petersdanceparty.com/blog/show/interesting-links-for-29-1-1</id>
   <content type="html">&lt;ul&gt;

  &lt;li&gt;&lt;a href=&quot;http://pastie.org/349916&quot;&gt;Source code containing the Z2K9 zune bug&lt;/a&gt; 
  
     &lt;br&gt;The offending function is ConvertDays() at 249.
  
  &lt;/li&gt;

  &lt;li&gt;&lt;a href=&quot;http://nymag.com/daily/entertainment/2008/12/a_field_guide_to_the_complete.html&quot;&gt;Slideshow: Facial Expressions of Keanu Reeves&lt;/a&gt; 
  
  &lt;/li&gt;

&lt;/ul&gt;


</content>
 </entry>
 
 <entry>
   <title>Interesting Links for 2008-31-12</title>
   <link href="http://petersdanceparty.com/blog/show/interesting-links-for-28-31-12.html"/>
   <updated>2009-01-01T00:00:00-08:00</updated>
   <id>http://petersdanceparty.com/blog/show/interesting-links-for-28-31-12</id>
   <content type="html">&lt;ul&gt;

  &lt;li&gt;&lt;a href=&quot;http:blogs.sun.com/bmc/entry/catching_disk_latency_in_the&quot;&gt;Catching disk latency in the act&lt;/a&gt; 
  
     &lt;br&gt;Wow. This makes me long for dtrace.
Maybe its time to try nexenta?
  
  &lt;/li&gt;

  &lt;li&gt;&lt;a href=&quot;http://leisureblogs.chicagotribune.com/thestew/2008/12/intelligentsia.html&quot;&gt;Intelligentsia on Broadway banishes urn coffee&lt;/a&gt; 
  
  &lt;/li&gt;

&lt;/ul&gt;


</content>
 </entry>
 
 <entry>
   <title>Interesting Links for 2008-30-12</title>
   <link href="http://petersdanceparty.com/blog/show/interesting-links-for-28-3-12.html"/>
   <updated>2008-12-31T00:00:00-08:00</updated>
   <id>http://petersdanceparty.com/blog/show/interesting-links-for-28-3-12</id>
   <content type="html">&lt;ul&gt;

  &lt;li&gt;&lt;a href=&quot;http://chicagoatlas.areaprojects.com/&quot;&gt;People's Atlas of Chicago — Just another WordPress weblog&lt;/a&gt; 
  
  &lt;/li&gt;

  &lt;li&gt;&lt;a href=&quot;http://www.nytimes.com/2008/12/28/magazine/28fischer-t.html?ref=magazine&quot;&gt;The Life of Bobby Fischer&lt;/a&gt; 
  
  &lt;/li&gt;

&lt;/ul&gt;


</content>
 </entry>
 
 <entry>
   <title>Emacs (url-retrieve-synchronously) and TLS</title>
   <link href="http://petersdanceparty.com/blog/show/emacs-url-retrieve-synchronously-and-tls.html"/>
   <updated>2008-09-14T00:00:00-07:00</updated>
   <id>http://petersdanceparty.com/blog/show/emacs-url-retrieve-synchronously-and-tls</id>
   <content type="html">&lt;p&gt;(url-retrieve-synchronously) was giving me the following error when trying to use https:&lt;/p&gt;&lt;code&gt;
Opening TLS connection with `gnutls-cli -p %p %h'...failed
Opening TLS connection with `gnutls-cli -p %p %h --protocols ssl3'...failed
Opening TLS connection with `openssl s_client -connect %h:%p -no_ssl2'...done
&lt;/code&gt;
&lt;code&gt;
Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p nil)
url-http-wait-for-headers-change-function(1 368 367)
url-http-generic-filter(#&amp;lt;process ...&amp;gt; &quot;6E773...
    Session-ID-ctx: 
    Master-Key: AE99...
    Key-Arg   : None
    Compression: 1 (zlib compression)
    Start Time: 1221...
    Timeout   : 300 (sec)
    Verify return code: 21 (unable to verify the first certificate)
---&quot;)
&lt;/code&gt;
&lt;p&gt;Solution:&lt;/p&gt;
&lt;code&gt;
apt-get install gnutls-bin
&lt;/code&gt;
&lt;a href=&quot;http://www.flickr.com/photos/psanford/2855385962/&quot; title=&quot;Steeple by psanford, on Flickr&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3156/2855385962_1ac4b90a05.jpg&quot; width=&quot;500&quot; height=&quot;269&quot; alt=&quot;Steeple&quot; /&gt;&lt;/a&gt;


</content>
 </entry>
 
 <entry>
   <title>Howto repair a Princeton VL1918 monitor</title>
   <link href="http://petersdanceparty.com/blog/show/howto-repair-a-princeton-vl1918-monitor.html"/>
   <updated>2008-07-13T00:00:00-07:00</updated>
   <id>http://petersdanceparty.com/blog/show/howto-repair-a-princeton-vl1918-monitor</id>
   <content type="html">&lt;p&gt;A few days ago a coworker of mine saved a &lt;a href=&quot;http://reviews.cnet.com/lcd-monitors/princeton-vl1918-flat-panel/4505-3174_7-32144950.html&quot;&gt;Princeton VL1918 monitor&lt;/a&gt; from the trash. It looked to be in pretty good shape, but when we plugged it in, it would turn on for about 2 second then power off for 2 seconds and then repeat. Apparently this is a &lt;a href=&quot;http://www.fixya.com/support/t258357-vl1918_poweres_shuts_off_repeat&quot;&gt;common problem&lt;/a&gt; for these monitors. So common, in fact, there is a least one company out there selling repair kits for $25 on ebay. A bit of a rip off considering the actual cost of parts is about $4. So for anyone else experiencing this same problem, here's how I fixed my monitor.&lt;/p&gt;&lt;p&gt;Disclaimer: Although these instructions worked for me, they might not work for you. Furthermore, the following process involves modifying the power supply of your monitor, a potentially dangerous action that could result in electrocution. These instructions are made available to you only on the condition that you will not hold me responsible for any damage or injury that occur in the process of following them.&lt;/p&gt;
&lt;p&gt; Unplug all cables connected to the monitor. You will need to remove the back cover in order to get to the power supply. Remove the four screws connected to the stand and the three screws at the bottom of the monitor. Now you will need to pry apart the front and back pieces of the monitor. Starting from the base and working your way up the sides, use a flathead screwdriver to pry apart the two pieces of plastic. Once you have worked all the way around the monitor, you should be able to remove the back piece of plastic.&lt;/p&gt;
&lt;p&gt;It should now look like this:&lt;/p&gt;
&lt;a href=&quot;http://www.flickr.com/photos/psanford/2666303280/&quot; title=&quot;monitor1 by psanford, on Flickr&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3214/2666303280_84fbc5b397.jpg&quot; width=&quot;500&quot; height=&quot;333&quot; alt=&quot;monitor1&quot; /&gt;&lt;/a&gt;
&lt;p&gt;You will now need to disconnect all the cables going into the cage in the center. Some of the cables are under the metallic tape. Peel the tape away wherever necessary. It wasn't necessary to remove the main cable attached to the top of the cage.&lt;/p&gt;
&lt;p&gt;Unscrew the cage from the frame and flip it over. There you will see two electronic boards. One handles IO, the other is the power supply. You will need to disconnect both boards from the cage to get access to the power supply. Remove the plastic shield and unscrew both boards. You will also need to remove the screws that hold the vga and dvi connectors in place (the ones that the external cables screw into). Remove both boards at the same time; they are connected.&lt;/p&gt;
&lt;a href=&quot;http://www.flickr.com/photos/psanford/2666303296/&quot; title=&quot;monitor2 by psanford, on Flickr&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3092/2666303296_149032dfa0.jpg&quot; width=&quot;500&quot; height=&quot;333&quot; alt=&quot;monitor2&quot; /&gt;&lt;/a&gt;
&lt;p&gt;Disconnect the power supply from the other board. Now that you have the power supply, you will need remove three capacitors located here:&lt;/p&gt;
&lt;a href=&quot;http://www.flickr.com/photos/psanford/2666303306/&quot; title=&quot;power_supply by psanford, on Flickr&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3121/2666303306_6a54fb5fc4.jpg&quot; width=&quot;500&quot; height=&quot;332&quot; alt=&quot;power_supply&quot; /&gt;&lt;/a&gt;
&lt;p&gt;All three are 470µF 25V capacitors. Use a soldering iron on their connections and pull gently from the other side. Once you have removed the capacitors, you can drop in replacement ones. I bought 3 &lt;a href=&quot;http://www.radioshack.com/product/index.jsp?productId=2103624&quot;&gt;470µF 35V capacitors&lt;/a&gt; from radio shack for $4. Make sure you put them in correctly, the negative side should go through the shaded hole on the board. Solder in the new capacitors and clip the extra material on the connectors.&lt;/p&gt;
&lt;p&gt;And your monitor is fixed. Reassemble and enjoy.&lt;/p&gt;


</content>
 </entry>
 
 <entry>
   <title>Server side pdf generation from html</title>
   <link href="http://petersdanceparty.com/blog/show/server-side-pdf-generation-from-html.html"/>
   <updated>2008-04-20T00:00:00-07:00</updated>
   <id>http://petersdanceparty.com/blog/show/server-side-pdf-generation-from-html</id>
   <content type="html">&lt;p&gt;I want to generate PDF documents from HTML on the server. Is that so much to ask? There are a few strategies to do this, but I found them all to be laking one way or another. Any tool that isn't using a robust rendering engine is right out. They just can't handle the complexity of the HTML that I'm working with. Ok, so we need to use a real browser. The closest thing was probably &lt;a href=&quot;http://khtml2png.sourceforge.net/&quot;&gt;khtml2png&lt;/a&gt;, but it's more of a cool hack than a useable tool (page size and length are actually important).&lt;/p&gt;&lt;p&gt;Firefox has supported printing to postscript files for as long as I can remember. Exploiting this functionality seemed like the path of least resistance. And now that Firefox 3 has the ability to print to pdf natively I thought I would give it another shot.&lt;/p&gt;&lt;p&gt;The only real question was how to interface nicely with Firefox. This weekend I found my solution: &lt;a href=&quot;http://www.croczilla.com/jssh&quot;&gt;JSSh&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;JSSh is a javascript shell server for mozilla. Basically it allows you to &lt;a href=&quot;http://www.urbanhonking.com/ideasfordozens/archives/2008/03/automating_fire.html&quot;&gt;remotely control a mozilla session.&lt;/a&gt; Pretty cool. Using this along with a few tweaks to a Firefox profile gets me pretty close to a decent solution. So let me walk you through exactly what I did.&lt;/p&gt;
&lt;p&gt;I'm running a Linux server without X. Since Firefox needs some graphical environment to run in, I'm using &lt;a href=&quot;http://en.wikipedia.org/wiki/Xvfb&quot;&gt;Xvfb&lt;/a&gt;. I would suggest trying this first on a machine running X so you can see whats happening.&lt;/p&gt;
&lt;p&gt;The first step is to build Firefox with support for jssh. The is a plugin but it isn't compatible with FF3 and it didn't work for me in FF2. So lets build it from source. Get the latest Firefox source tarball from here &lt;a href=&quot;ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/&quot;&gt;ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/&lt;/a&gt;. As of writing it is &lt;a href=&quot;ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/3.0b5/source/firefox-3.0b5-source.tar.bz2&quot;&gt;3.0b5&lt;/a&gt;. After extracting the tarball you will need to create a .mozconfig file in the new mozilla directory. My .mozconfig looks like this (hopefully it will work for you:)&lt;/p&gt;
&lt;code&gt;
. $topsrcdir/browser/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/fx-jssh
mk_add_options MOZ_CO_PROJECT=browser,xulrunner
ac_add_options --enable-extensions=default,jssh,webservices
ac_add_options --enable-debug --disable-optimize
ac_add_options --enable-default-toolkit=cairo-gtk2
mk_add_options MOZ_MAKE_FLAGS=-j3
&lt;/code&gt;
&lt;p&gt;Make sure you have all the &lt;a href=&quot;http://developer.mozilla.org/en/docs/Linux_Build_Prerequisites&quot;&gt;required dependencies installed&lt;/a&gt;. Alright, lets build it. In the mozilla directory:&lt;/p&gt;
&lt;code&gt;
$ make -f client.mk build 
&lt;/code&gt;
&lt;p&gt;Time to give our newly build FF a try. (Don't do this if you're running a headless environment)&lt;/p&gt;
&lt;code&gt;
$ cd fx-jssh/dist/bin;
$ ./firefox -jssh -P -no-remote
&lt;/code&gt;
&lt;p&gt;This will start up Firefox and prompt you to create a new profile. If you have multiple versions of Firefox on the same machine, you will want different profiles for each of them. You can then specify which profile to use after the '-P' flag. I created a profile named jssh. In my profile's directory (~/.mozilla/firefox/jssh), I created a user.js:&lt;/p&gt;
&lt;code&gt;
user_pref(&quot;print.always_print_silent&quot;, true);
user_pref(&quot;print.print_bgcolor&quot;, true);
user_pref(&quot;print.print_bgimages&quot;, true);
user_pref(&quot;print.print_shrink_to_fit&quot;, false);
user_pref(&quot;print.print_to_file&quot;, true);
user_pref(&quot;print.print_to_filename&quot;, &quot;/tmp/mozilla.pdf&quot;);
user_pref(&quot;browser.startup.homepage&quot;, &quot;about:blank&quot;);
user_pref(&quot;browser.sessionstore.resume_from_crash&quot;, false);
&lt;/code&gt;
&lt;p&gt;This will cause Firefox to always print to /tmp/mozilla.pdf without going through the normal print dialogs. These settings work well for what I'm using this for, but I would suggest playing around with these and other settings to get something that will work well for you.&lt;/p&gt;
&lt;p&gt;Alright, lets telnet in. The default is for jssh to listen on port 9997.&lt;/p&gt;
&lt;code&gt;
$ telnet localhost 9997
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Welcome to the Mozilla JavaScript Shell!
&lt;/code&gt;
&lt;p&gt;And to print our first pdf:&lt;/p&gt;
&lt;code&gt;
&amp;gt; var w0 = getWindows()[0];
&amp;gt; var browser = w0.getBrowser();
&amp;gt; browser.loadURI(&quot;http://google.com&quot;) 
&amp;gt; var window = browser.contentWindow;
&amp;gt; window.print();
&lt;/code&gt;
&lt;p&gt;If all goes well you should have a new pdf at /tmp/mozilla.pdf.&lt;/p&gt;
&lt;p&gt;JSSh seems to be fairly powerful. I wonder what other interesting things you could do with it.&lt;/p&gt;


</content>
 </entry>
 
 <entry>
   <title>History Meme</title>
   <link href="http://petersdanceparty.com/blog/show/history-meme.html"/>
   <updated>2008-04-16T00:00:00-07:00</updated>
   <id>http://petersdanceparty.com/blog/show/history-meme</id>
   <content type="html">&lt;p&gt;Alright, I'll play.&lt;/p&gt;&lt;code&gt;psanford@korah:~% uname -a
Linux korah 2.6.24-16-generic #1 SMP Thu Apr 10 12:47:45 UTC 2008 x86_64 GNU/Linux
&lt;/code&gt;
&lt;code&gt;psanford@korah:~% history -1000 | awk '{a[$2]++}END{for(i in a){print a[i] &quot; &quot; i}}' | sort -rn | head
203 ls
192 cd
62 fetchmail
54 ssh
31 ruby
31 rm
31 git
30 firefox
28 svn
17 irb
&lt;/code&gt;
&lt;p&gt;(My shell is zsh)&lt;/p&gt;


</content>
 </entry>
 
 <entry>
   <title>Wedding Two</title>
   <link href="http://petersdanceparty.com/blog/show/wedding-two.html"/>
   <updated>2008-01-01T00:00:00-08:00</updated>
   <id>http://petersdanceparty.com/blog/show/wedding-two</id>
   <content type="html">&lt;a href=&quot;http://www.flickr.com/photos/psanford/2150450557/&quot; title=&quot;Erik and Mikayla by psanford, on Flickr&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2053/2150450557_78336452a5.jpg&quot; width=&quot;500&quot; height=&quot;333&quot; alt=&quot;Erik and Mikayla&quot; /&gt;&lt;/a&gt;

</content>
 </entry>
 
 <entry>
   <title>Wedding Number One</title>
   <link href="http://petersdanceparty.com/blog/show/wedding-number-one.html"/>
   <updated>2007-12-24T00:00:00-08:00</updated>
   <id>http://petersdanceparty.com/blog/show/wedding-number-one</id>
   <content type="html">&lt;a href=&quot;http://www.flickr.com/photos/psanford/2132093612/&quot; title=&quot;Greg and Katherine by psanford, on Flickr&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2407/2132093612_cf00f53be9.jpg&quot; width=&quot;500&quot; height=&quot;333&quot; alt=&quot;Greg and Katherine&quot; /&gt;&lt;/a&gt;

</content>
 </entry>
 
 <entry>
   <title>Maybe Mr. T. is pretty handy with computers</title>
   <link href="http://petersdanceparty.com/blog/show/maybe-mr-t-is-pretty-handy-with-computers.html"/>
   <updated>2007-12-10T00:00:00-08:00</updated>
   <id>http://petersdanceparty.com/blog/show/maybe-mr-t-is-pretty-handy-with-computers</id>
   <content type="html">&lt;p&gt;A few weeks ago I changed the authentication scheme at the dance party. I wrote a big post about how the new authentication scheme was so cool and how I was cool by association. I couldn't bring myself to put it up, even though I think it's really important for people to know how cool I am (via all the cool authentication schemes that I hang out with).&lt;/p&gt;&lt;p&gt; Here are two run-on sentences that summarize that post: I don't pay for a static IP address for petersdanceparty.com and therefore I don't have ssl and therefore when I used to authenticate I would send my password in cleartext (not cool). So now I use a WSSE token and everything you need to know about WSS you can learn from an &lt;a href=&quot;http://www.xml.com/pub/a/2003/12/17/dive.html&quot;&gt;article by Mark Pilgrim&lt;/a&gt; and from the &lt;a href=&quot;http://www.oasis-open.org/committees/download.php/16782/wss-v1.1-spec-os-UsernameTokenProfile.pdf&quot;&gt;WSS: UserToken spec&lt;/a&gt;(pdf). You can thank me later for all the time I just saved you.&lt;/p&gt; 
&lt;p&gt;Anyways, I suggest you take all that extra time that you now have and put it to good use by watching this WoW ad featuring Mr. T.&lt;/p&gt; 
&lt;object type=&quot;application/x-shockwave-flash&quot; style=&quot;width:425px; height:350px;&quot; data=&quot;http://www.youtube.com/v/bqJE5TH5jhc&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/bqJE5TH5jhc&quot; /&gt;&lt;/object&gt;
&lt;p&gt;Thanks Mr. T.&lt;/p&gt;


</content>
 </entry>
 
 <entry>
   <title>Laptop Repair</title>
   <link href="http://petersdanceparty.com/blog/show/laptop-repair.html"/>
   <updated>2007-11-04T00:00:00-07:00</updated>
   <id>http://petersdanceparty.com/blog/show/laptop-repair</id>
   <content type="html">&lt;p&gt;I have had a &lt;a href=&quot;http://reviews.cnet.com/laptops/dell-inspiron-600m/4505-3121_7-20906173.html&quot;&gt;dell 600m laptop&lt;/a&gt; for about three years now. It sucks. Well I guess its a bit more complicated than that.&lt;/p&gt;&lt;p&gt;It worked perfectly for a year. About a week after the one year warranty expired, hardware started to fail. First was the wired ethernet port; it would randomly cause the machine to lockup until I disabled it in the bios. Next was the power button. When I would try to turn on the machine, the LEDs would flicker for a few seconds and then turn off. The only way to get the machine to turn on was to remove the battery and hit it in a specific place. Most recently, the power connector has become flaky. A loose connection somewhere that required cable jiggling. Annoying but I could work around these failures.&lt;/p&gt;
&lt;p&gt;Until last week. I jiggled and jiggled but to no avail. My laptop would not charge. For most, this would have probably been a good time to purchase a new machine. But I'm cheap and there aren't any machines out there right now that I like. So my only real option was laptop surgery. &lt;/p&gt;
&lt;p&gt;Disclaimer: Don't try this unless you are ok with completely ruining your hardware and/or electrocuting yourself.&lt;/p&gt;
&lt;p&gt;Fortunately dell has really good &lt;a href=&quot;http://support.dell.com/support/edocs/systems/ins600m/en/sm/index.htm&quot;&gt;repair manuals available online&lt;/a&gt;.   So with the help of the manual, I took my laptop apart. To get to the power connector, I had to take it &lt;em&gt;all&lt;/em&gt; apart.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/psanford/1847136232/&quot; title=&quot;Photo Sharing&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2174/1847136232_21c9d3ae60.jpg&quot; width=&quot;500&quot; height=&quot;333&quot; alt=&quot;Laptop 1&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;With the machine apart, it was clear that the power connector had physically detached from the motherboard. Soldering would have been difficult if not impossible based on power connector was located. But it looked like I could build a shim to hold the connector in place.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/psanford/1847136248/&quot; title=&quot;Photo Sharing&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2079/1847136248_3c165536a2.jpg&quot; width=&quot;500&quot; height=&quot;333&quot; alt=&quot;Laptop 2&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now it was just a question of what to use for this shim. I don't have a lot of materials in my apartment for this sort of thing (strange, I know). But with a little bit of scrounging I found a fan who's blades were about the right size. This very fan &lt;a href=&quot;http://petersdanceparty.comblog/show/new-coffee-grinder&quot;&gt;betrayed me only a few weeks earlier&lt;/a&gt; so I had no problem breaking off a few blades.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/psanford/1847136258/&quot; title=&quot;Photo Sharing&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2135/1847136258_b612e15b06.jpg&quot; width=&quot;500&quot; height=&quot;333&quot; alt=&quot;Fan&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And I had power again.&lt;/p&gt;
&lt;p&gt;This was only a short term fix. I don't think my laptop will last past January. Even still, its nice to get a few more months out of it.&lt;/p&gt;


</content>
 </entry>
 
 <entry>
   <title>Who you should read part (part 1)</title>
   <link href="http://petersdanceparty.com/blog/show/who-you-should-read-part-part-1.html"/>
   <updated>2007-10-24T00:00:00-07:00</updated>
   <id>http://petersdanceparty.com/blog/show/who-you-should-read-part-part-1</id>
   <content type="html">&lt;p&gt;I took the red-eye to Minneapolis last Sunday night. To help me get to sleep, I turned on a &lt;a href=&quot;http://www.amazon.com/We-Walked-Song-Innocence-Mission/dp/B000M7FO8Y&quot;&gt;really mellow album&lt;/a&gt; that I own. I then started to ponder a perl implementation of the &lt;a href=&quot;http://en.wikipedia.org/wiki/Y_combinator&quot;&gt;Y combinator&lt;/a&gt; (whether intentional or on purpose no one can say). As I began to fall asleep the music and the perl code begin to merge into one harmonious musical expression of anonymous recursive functions. For a moment the code and the music became one. I can only describe the experience as &lt;em&gt;unexpected&lt;/em&gt;.&lt;/p&gt;&lt;p&gt;So yeah, I think about software. And thus I have taken that experience as my cue to begin doing what I had originally planned for this blog: making stuff up about software. &lt;/p&gt;&lt;p&gt;At first I thought it would be really easy. Write a few witty things and bam, all my readers would soon be out trying to by an &lt;a href=&quot;http://www.columbia.edu/acis/history/dmkeyboard.jpg&quot;&gt;APL keyboard&lt;/a&gt;, or when that failed, &lt;a href=&quot;http://www.di.unipi.it/~saiu/apl-keyboard/&quot;&gt;making their own APL keyboards&lt;/a&gt;. Sadly it appears my readers are &lt;a href=&quot;http://petersdanceparty.comblog/show/jenna-s-response&quot;&gt;too smart to be bamboozled by my tomfoolery&lt;/a&gt;. Alas.&lt;/p&gt;&lt;p&gt;So Instead let me point you to a few people who I enjoy reading (because they are (a)smart, (b)funny, (c)interesting, or (d)great bamboozlers (I hope you realize the only reason I am writing this at all is to use the word 'bamboozle')). I figure this will be an on going series here at my dance party. &lt;/p&gt;&lt;p&gt;Alright, let us start with a software all-star of sorts (at least in terms of software blogs). About a year ago &lt;a href=&quot;http://joelonsoftware.com&quot;&gt;Joel Spolsky&lt;/a&gt; indirectly said that &lt;a href=&quot;http://www.joelonsoftware.com/items/2006/08/05.html&quot;&gt;50% of the good writing about software&lt;/a&gt; right now is by &lt;a href=&quot;http://steve-yegge.blogspot.com&quot;&gt;Steve Yegge&lt;/a&gt;. Dare Obasanjo said of Stevey, &quot;&lt;a href=&quot;http://www.25hoursaday.com/weblog/2007/06/12/INeedASteveyYeggeTranslator.aspx&quot;&gt;You can consider him to be the new school version of Joel Spolsky&lt;/a&gt;&quot;.  &lt;/p&gt;&lt;p&gt;Right now Stevey is at google. You might have heard of a project he's working on to &lt;a href=&quot;http://www.iunknown.com/2007/06/steve-yegge-por.html&quot;&gt;port Rails to javascript&lt;/a&gt; (javascript being one of the google approved languages while ruby is not). He likes to talk about languages and editors (really only the &lt;a href=&quot;http://www.gnu.org/software/emacs/&quot;&gt;&lt;em&gt;best&lt;/em&gt; editor&lt;/a&gt;) and software development in general.&lt;/p&gt;&lt;p&gt;I would suggest reading both &lt;a href=&quot;http://steve-yegge.blogspot.com&quot;&gt;his new stuff&lt;/a&gt; and his &lt;a href=&quot;http://steve.yegge.googlepages.comblog-rants&quot;&gt;his older posts&lt;/a&gt;. Here are a few that you might want to start with: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://steve-yegge.blogspot.com/2006/09/good-agile-bad-agile_27.html&quot;&gt;Good Agile, Bad Agile&lt;/a&gt;, this one made a bit of a splash when he posted it&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://steve.yegge.googlepages.com/practicing-programming&quot;&gt;Practicing Programming&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://steve.yegge.googlepages.com/ancient-languages-perl&quot;&gt;Ancient Languages: Perl&lt;/a&gt; (and for a funny follow up go read &lt;a href=&quot;http://steve-yegge.blogspot.com/2007/08/how-to-make-funny-talk-title-without.html&quot;&gt;How to Make a Funny Talk Title Without Using The Word &quot;Weasel&quot;&lt;/a&gt; and find the part about Larry Wall)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://steve.yegge.googlepages.com/five-essential-phone-screen-questions&quot;&gt;Five Essential Phone Screen Questions&lt;/a&gt;&lt;/li&gt;&lt;li&gt;And a few emacs posts:  &lt;a href=&quot;http://steve.yegge.googlepages.com/effective-emacs&quot;&gt;Effective Emacs&lt;/a&gt;, &lt;a href=&quot;http://steve.yegge.googlepages.com/the-emacs-problem&quot;&gt;The Emacs Problem&lt;/a&gt;, &lt;a href=&quot;http://steve.yegge.googlepages.com/my-dot-emacs-file&quot;&gt;My .emacs File&lt;/a&gt;, &lt;a href=&quot;http://steve-yegge.blogspot.com/2006/06/shiny-and-new-emacs-22.html&quot;&gt;Shiny and New: Emacs 22&lt;/a&gt; (Update: oh, and I forgot &lt;a href=&quot;http://steve-yegge.blogspot.com/2007/02/my-save-excursion.html&quot;&gt;My save excursion&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;I also suggest you watch the &lt;a href=&quot;http://blip.tv/file/319044/&quot;&gt;keynote he gave at this years OSCON&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Well, you'd better get started. Stevey's posts are long and deep so really there's no more time to waste.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/psanford/1508946293/&quot; title=&quot;Photo Sharing&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2012/1508946293_2391b107ed.jpg&quot; width=&quot;332&quot; height=&quot;500&quot; alt=&quot;Blanchard Through The Trees&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Jenna's Response</title>
   <link href="http://petersdanceparty.com/blog/show/jenna-s-response.html"/>
   <updated>2007-10-13T00:00:00-07:00</updated>
   <id>http://petersdanceparty.com/blog/show/jenna-s-response</id>
   <content type="html">&lt;p&gt;This is Jenna's response:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;I tried to post on your website but apparently, petersdanceparty.com is an oppressive regime of censorship, and does not encourage the free speech of the masses. Therefore, I am posting my response on your wall.&lt;/p&gt;&lt;p&gt;Miss D would like to formerly apologize for any comments referencing petersdanceparty.com to her U.S. History students in room 314 on Friday, September 28. However, she is launching her own fact campaign:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Fact: Benjamin Franklin can, and should, be legitimately classified as a pimp.&lt;/li&gt;&lt;li&gt;Fact: There is reasonable doubt as to the nature of the supposed &quot; Zassenhaus coffee grinder&quot; picture found on petersdanceparty.com. Coffee grinder...or Jack-in-the-Box?&lt;/li&gt;&lt;li&gt;Fact: Miss D. has never seen that Jawa before in her life.&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;p&gt;There is no need for me to pick apart this argument. I have but one response: Does this look like a pimp to you?&lt;/p&gt; &lt;object type=&quot;application/x-shockwave-flash&quot; style=&quot;width:425px; height:350px;&quot; data=&quot;http://www.youtube.com/v/ql2C-TYpL44&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/ql2C-TYpL44&quot; /&gt;&lt;/object&gt; &lt;a href=&quot;http://www.youtube.com/watch?v=ql2C-TYpL44&quot;&gt;Link to video for rss readers.&lt;/a&gt;

</content>
 </entry>
 
 <entry>
   <title>High School Teacher Caught in Web of Lies</title>
   <link href="http://petersdanceparty.com/blog/show/high-school-teacher-caught-in-web-of-lies.html"/>
   <updated>2007-10-01T00:00:00-07:00</updated>
   <id>http://petersdanceparty.com/blog/show/high-school-teacher-caught-in-web-of-lies</id>
   <content type="html">&lt;p&gt;It has come to my attention that a certain high school teacher has been libeling the good name of &lt;a href=&quot;http://petersdanceparty.com&quot;&gt;petersdanceparty.com&lt;/a&gt;. Compelled by a personal vendetta against all things dancing, Miss &quot;D.&quot; has repeatedly attempted to discredit petersdanceparty as a legitimate research source (especially when cited in high school social studies essays). I will not stand idly by as she destroys the dreams of tens of students who simply wanted to believe that they too could start a dance party blog with their names somehow incorporated into the title.&lt;/p&gt;&lt;p&gt;That is why today I am starting the first annual &lt;em&gt;Dance Party Facts&lt;/em&gt; campaign to help stop prejudices against dance parties and their respective websites. Its time our students got a proper education:&lt;/p&gt;&lt;ul&gt;  &lt;li&gt;Fact: Despite popular belief, Benjamin Franklin was &lt;em&gt;not&lt;/em&gt; a pimp.&lt;/li&gt;  &lt;li&gt;Fact: Miss D. claims to hate dancing, but many witnesses saw her dancing in Japan Town only a few short weeks ago.&lt;/li&gt;  &lt;li&gt;Fact: I &lt;em&gt;did&lt;/em&gt; just get a Zassenhaus coffee grinder, even though a certain teacher would have you think otherwise.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;As you can see, there is no basis for any of the statements that Miss D. has made against &lt;a href=&quot;http://petersdanceparty.com&quot;&gt;petersdanceparty.com&lt;/a&gt;. Perhaps if Miss D. had spent a little more time checking her facts and a little less time cavorting with &lt;a href=&quot;http://en.wikipedia.org/wiki/List_of_Star_Wars_races_(F-J)#Jawa&quot;&gt;Jawas&lt;/a&gt; this unfortunate incident could have been avoided.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/psanford/1465665017/&quot; title=&quot;Photo Sharing&quot;&gt;&lt;img src=&quot;http://farm2.static.flickr.com/1183/1465665017_27fbdc8535.jpg&quot; width=&quot;500&quot; height=&quot;332&quot; alt=&quot;Jawa in SF&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Thank you.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>New Coffee Grinder</title>
   <link href="http://petersdanceparty.com/blog/show/new-coffee-grinder.html"/>
   <updated>2007-09-29T00:00:00-07:00</updated>
   <id>http://petersdanceparty.com/blog/show/new-coffee-grinder</id>
   <content type="html">&lt;p&gt;Well I finally got my new Zassenhaus coffee grinder. I have been wanting one for about a year now. Sadly they have been unavailable in the States for at least a year (Zassenhaus went through bankruptcy). But this past week &lt;a href=&quot;http://www.sweetmarias.com/prod.zas.shtml&quot;&gt;Sweet Maria's&lt;/a&gt; started to sell them again. I immediately bought one.&lt;/p&gt;&lt;p&gt;Most coffee experts will tell you that your coffee grinder is the most important piece of equipment to get right. Buying a $200 grinder is not unreasonable if you want really good coffee. The Zassenhaus grinders give you the same quality as the $200 grinders for much less. As long as you don't mind a little workout, these manual grinders are a great deal.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/psanford/1461011646/&quot; title=&quot;Photo Sharing&quot;&gt;&lt;img src=&quot;http://farm2.static.flickr.com/1211/1461011646_d7e0572340.jpg&quot; width=&quot;500&quot; height=&quot;332&quot; alt=&quot;Zassenhaus&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In other news, my TF2 play hit a snag when the fan on my video card melted off. I kid you not. But now I have a new, fanless card and all is well. &lt;/p&gt;&lt;p&gt;Development continues on this blog. Most of my focus has been on writing tools. I took a break from tools today and added tags.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>TF2, oh yeah</title>
   <link href="http://petersdanceparty.com/blog/show/tf2-oh-yeah.html"/>
   <updated>2007-09-17T00:00:00-07:00</updated>
   <id>http://petersdanceparty.com/blog/show/tf2-oh-yeah</id>
   <content type="html">&lt;p&gt;I would say it's pretty rare for me to get really excited about new video games coming out. But there are actually a bunch that I'm looking forward to in the next few months. &lt;a href=&quot;http://www.amazon.com/Nintendo-Metroid-Prime-3-Corruption/dp/B000FQBPDU/ref=pd_bbs_sr_1/102-6574185-0740907?&quot;&gt;Metroid Prime 3&lt;/a&gt;(which is already out), &lt;a href=&quot;http://www.amazon.com/gp/product/B000FQ9R4E/ref=wl_it_dp/102-6574185-0740907&quot;&gt;Smash Brothers Brawl&lt;/a&gt;, &lt;a href=&quot;http://www.amazon.com/gp/product/B000FQ9QVI/ref=wl_it_dp/102-6574185-0740907&quot;&gt;Mario Galaxy&lt;/a&gt;, and &lt;a href=&quot;http://www.amazon.com/gp/product/B000FRV2UK/ref=wl_it_dp/102-6574185-0740907&quot;&gt;Zelda Phantom Hour Glass&lt;/a&gt; are all quite exciting.&lt;/p&gt;&lt;p&gt;But today I just gave in and purchased &lt;a href=&quot;http://en.wikipedia.org/wiki/The_Orange_Box&quot;&gt;orange box&lt;/a&gt; so I can play the beta of Team Fortress 2. I loved TFC along with Half-Life and its spawn. I have only the highest expectations for Team Fortress 2. You will too after you watch this video: &lt;/p&gt; &lt;object type=&quot;application/x-shockwave-flash&quot; style=&quot;width:425px; height:350px;&quot; data=&quot;http://www.youtube.com/v/NJzRGrQ8_Gs&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/NJzRGrQ8_Gs&quot; /&gt;&lt;/object&gt;

</content>
 </entry>
 
 <entry>
   <title>iPod touch for the rest of us</title>
   <link href="http://petersdanceparty.com/blog/show/ipod-touch-for-the-rest-of-us.html"/>
   <updated>2007-09-17T00:00:00-07:00</updated>
   <id>http://petersdanceparty.com/blog/show/ipod-touch-for-the-rest-of-us</id>
   <content type="html">&lt;p&gt;I have to say that I really like the &lt;a href=&quot;http://en.wikipedia.org/wiki/IPhone&quot;&gt;new iPhones&lt;/a&gt;. (Interesting side note: what would you guess is the number one result for 'iphone' on google? Apple.com? No. Wikipedia.com? Nope. The answer is cnet.com. I know, that &lt;em&gt;is&lt;/em&gt; crazy.(&lt;b&gt;Update:&lt;/b&gt; this is not the case anymore)) Four developers have them at &lt;a href=&quot;http://airwave.com&quot;&gt;Airwave&lt;/a&gt; so far and they love them. If Verizon used gsm I would be very tempted. But they don't, and I don't think my contract is up until next year. So no iPhone for me.&lt;/p&gt;&lt;p&gt;However, the &lt;a href=&quot;http://www.apple.com/ipodtouch/&quot;&gt;iPod touch&lt;/a&gt; is a different story. My mp3 player of choice has been a &lt;a href=&quot;http://en.wikipedia.org/wiki/Image:Ipod_backlight_transparent.png&quot;&gt;3g iPod&lt;/a&gt; for the past 4 years (and before that, the riovolt sp100). The 3g has pleasantly outlived its life expectancy with a little help from a &lt;a href=&quot;http://www.engadget.com/2005/06/02/apple-agrees-to-settlement-in-ipod-battery-class-action-suit/&quot;&gt;class action suit&lt;/a&gt;. Wait, what was I talking about. . . oh right, the ipod touch.&lt;/p&gt;
&lt;p&gt;The biggest obstacle that keeping me from this nice piece of hardware is the lack of linux support. You see, most ipods can sync with linux software without any problem. But recent ipods now use a &lt;a href=&quot;http://en.wikipedia.org/wiki/Hash_function&quot;&gt;hashing algorithm&lt;/a&gt; that prevents third party apps from playing nicely with the device. I would suggest that this move only fuels the hate side of the love-hate relationship between Apple and its customers. The good news is that some of the &lt;a href=&quot;http://www.gtkpod.org&quot;&gt;gtkpod&lt;/a&gt; folks have &lt;a href=&quot;http://tirania.orgblog/archive/2007/Sep-16.html&quot;&gt;figured out what the hashing algorithm is&lt;/a&gt;. This is certainly good news for me (and apple as they will likely make a sale they otherwise would not). &lt;/p&gt;
&lt;p&gt;Its a shame that apple didn't do this in the first place. It doesn't add any benefit to ipod users and only isolates otherwise happy customers.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/psanford/1339532145/&quot; title=&quot;Photo Sharing&quot;&gt;&lt;img src=&quot;http://farm2.static.flickr.com/1196/1339532145_df1f697c2d.jpg&quot; width=&quot;500&quot; height=&quot;332&quot; alt=&quot;Rear View&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


</content>
 </entry>
 
 <entry>
   <title>My Coffee Journey</title>
   <link href="http://petersdanceparty.com/blog/show/my-coffee-journey.html"/>
   <updated>2007-09-12T00:00:00-07:00</updated>
   <id>http://petersdanceparty.com/blog/show/my-coffee-journey</id>
   <content type="html">&lt;p&gt;If you know me at all you know that I love coffee. Not as a quick pick-me-up. No, my love for coffee comes from a deep pleasure I get from it. The wonder of a new bean that I have never tried before, the soothing ritual of using my press-pot, the joy of finding a great coffee shop to lose myself for hours on end. These are just part of my love for the bean. &lt;/p&gt;&lt;p&gt;Of course I was not always such a passionate coffee drinker. Here is a brief outline of my coffee life:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Mochas at *bucks before I could drive&lt;/li&gt;&lt;li&gt;Countless hours at my first independent coffee shop, &lt;a href=&quot;http://www.myspace.com/laspiaza&quot;&gt;La Spiaza&lt;/a&gt;&lt;/li&gt;&lt;li&gt;My first drip coffee maker, and eventually being able to distinguish different flavors and tones to the coffee I made.&lt;/li&gt;&lt;li&gt;Finding &lt;a href=&quot;http://www.intelligentsiacoffee.com&quot;&gt;Intelli&lt;/a&gt; and &lt;a href=&quot;http://www.metropoliscoffee.com&quot;&gt;Metropolis&lt;/a&gt; in Chicago (and discovering the joy of brewing fresh roasted coffee).&lt;/li&gt;&lt;li&gt;Switching over to press-pot as my preferred brewing methodology&lt;/li&gt;&lt;li&gt;And now entering into my west coast coffee adventure with the help of &lt;a href=&quot;http://ritualroasters.com&quot;&gt;ritual roasters&lt;/a&gt; in SF&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The reason I bring this up is because there is &lt;a href=&quot;http://www.nytimes.com/2007/09/12/dining/12coff.html&quot;&gt;an article in the New York Times about direct trade coffee.&lt;/a&gt; It mentions a few of my favorite coffee companies, and their new take on how to run a coffee business. My hope is that these companies will help the average coffee drinker discover the joy of an excellent cup of coffee. &lt;/p&gt;&lt;p&gt;Snapped this in SF over the weekend. &lt;br/&gt; &lt;a href=&quot;http://www.flickr.com/photos/psanford/1353286279/&quot; title=&quot;Photo Sharing&quot;&gt;&lt;img src=&quot;http://farm2.static.flickr.com/1303/1353286279_ab2c999e9c.jpg&quot; width=&quot;500&quot; height=&quot;332&quot; alt=&quot;SF Chevrolet&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>This entry posted from emacs</title>
   <link href="http://petersdanceparty.com/blog/show/this-entry-posted-from-emacs.html"/>
   <updated>2007-09-05T00:00:00-07:00</updated>
   <id>http://petersdanceparty.com/blog/show/this-entry-posted-from-emacs</id>
   <content type="html">If everything goes according to plan, this buffer (currently being edited in emacs) will automatically be posted as soon as I call (submit-post). Lets see what happens.

</content>
 </entry>
 
 <entry>
   <title>Its time for some new dancing</title>
   <link href="http://petersdanceparty.com/blog/show/its-time-for-some-new-dancing.html"/>
   <updated>2007-09-04T00:00:00-07:00</updated>
   <id>http://petersdanceparty.com/blog/show/its-time-for-some-new-dancing</id>
   <content type="html">Yes indeed it is a new dance party

</content>
 </entry>
 
 
</feed>

