<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>Ultra High</title>
	<atom:link href="http://ultrahigh.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://ultrahigh.org</link>
	<description>Cosmic Rays, Code and Life in New York</description>
	<pubDate>Tue, 09 Dec 2008 19:40:56 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>picflick: Picasa To Flickr Export on Linux</title>
		<link>http://ultrahigh.org/2008/12/09/picflick-picasa-to-flickr-export-on-linux/</link>
		<comments>http://ultrahigh.org/2008/12/09/picflick-picasa-to-flickr-export-on-linux/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 19:40:45 +0000</pubDate>
		<dc:creator>andy</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[export]]></category>

		<category><![CDATA[flickr]]></category>

		<category><![CDATA[picasa]]></category>

		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false">http://ultrahigh.org/?p=75</guid>
		<description><![CDATA[I&#8217;ve adapted the pragmatic-looking picasa2flickr Picasa plugin to work in Picasa 3 on Linux. Instead of feeding the Picasa files to a graphical Flickr uploader, it uploads them automatically using a perl utility called &#8216;flickr_upload&#8217;. Hopefully one or two people will find this useful.
Find it at picflick.
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve adapted the pragmatic-looking <a href="http://picasa2flickr.sourceforge.net/install_v2.html">picasa2flickr</a> Picasa plugin to work in Picasa 3 on Linux. Instead of feeding the Picasa files to a graphical Flickr uploader, it uploads them automatically using a perl utility called &#8216;flickr_upload&#8217;. Hopefully one or two people will find this useful.</p>
<p>Find it at <a href="http://ultrahigh.org/picflick/">picflick</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ultrahigh.org/2008/12/09/picflick-picasa-to-flickr-export-on-linux/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Weird problems with &#8216;curl -d&#8217; and lighttpd</title>
		<link>http://ultrahigh.org/2008/11/06/weird-problems-with-curl-d-and-lighttpd/</link>
		<comments>http://ultrahigh.org/2008/11/06/weird-problems-with-curl-d-and-lighttpd/#comments</comments>
		<pubDate>Thu, 06 Nov 2008 05:41:32 +0000</pubDate>
		<dc:creator>andy</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[curl]]></category>

		<category><![CDATA[google checkout]]></category>

		<category><![CDATA[lighttpd]]></category>

		<guid isPermaLink="false">http://ultrahigh.org/?p=61</guid>
		<description><![CDATA[I&#8217;m trying to test a Google Checkout response handler for a project I&#8217;m working on. Rather than putting through sandbox orders I&#8217;m just trying to post a message using Curl but for some reason POSTing anything longer than about a kilobyte just doesn&#8217;t show up at the server, running lighttpd 1.4. Enabling some debugging showed [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m trying to test a Google Checkout response handler for a project I&#8217;m working on. Rather than putting through sandbox orders I&#8217;m just trying to post a message using Curl but for some reason POSTing anything longer than about a kilobyte just doesn&#8217;t show up at the server, running lighttpd 1.4. Enabling some debugging showed that curl is sending an HTTP 100 header.</p>
<p><code>User-Agent: curl/7.18.0 (i486-pc-linux-gnu) libcurl/7.18.0 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.1<br />
Host: asap<br />
Accept: */*<br />
Content-Length: 1116<br />
Content-Type: application/x-www-form-urlencoded<br />
Expect: 100-continue</code></p>
<p>There&#8217;s a <a href="http://redmine.lighttpd.net/issues/show/1017">bug in lighttpd 1.4</a> which means that this &#8216;Expect&#8217; header is not handled properly. It won&#8217;t be fixed in v1.4 either.</p>
<p>The quick workaround for this bug is to call curl with the option &#8220;<code>-H &#8216;Expect: &#8216;</code>&#8221; to disable the header.</p>
<p>By the way, I also didn&#8217;t know how to post a file of data with curl - the answer is</p>
<code>curl -d &#8216;@file.xml&#8217;</code>
]]></content:encoded>
			<wfw:commentRss>http://ultrahigh.org/2008/11/06/weird-problems-with-curl-d-and-lighttpd/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Command-line face detection</title>
		<link>http://ultrahigh.org/2008/10/14/command-line-face-detection/</link>
		<comments>http://ultrahigh.org/2008/10/14/command-line-face-detection/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 09:13:10 +0000</pubDate>
		<dc:creator>andy</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://ultrahigh.org/?p=42</guid>
		<description><![CDATA[This post explains how to:

Take a facial portrait and detect the position of the face
Cut a facial portrait down the center and remove half of the picture so that kids can fill it in themselves.
Print a massive amount of JPEGs at once by putting them in a PDF.

I&#8217;m in the Eastern Cape, South Africa now, [...]]]></description>
			<content:encoded><![CDATA[<p>This post explains how to:</p>
<ol>
<li>Take a facial portrait and detect the position of the face</li>
<li>Cut a facial portrait down the center and remove half of the picture so that kids can fill it in themselves.</li>
<li>Print a massive amount of JPEGs at once by putting them in a PDF.</li>
</ol>
<p><a href="http://africa.potatoriot.com">I&#8217;m in the Eastern Cape, South Africa now</a>, working with orphans and vulnerable children. Alex and I are spending some of our time on art projects in remote rural areas, and one of the projects is an idea we stole from an orphanage in Cape Town: take a digital portrait of a child&#8217;s face, crop it down the center, print it and let them draw the other side of the face. Like this one Alex did:</p>
<div id="attachment_45" class="wp-caption aligncenter" style="width: 510px"><a href="http://ultrahigh.org/wp-content/uploads/2008/10/img_6238_500.jpg"><img class="size-full wp-image-45" title="Half-face portrait" src="http://ultrahigh.org/wp-content/uploads/2008/10/img_6238_500.jpg" alt="Alex's half-face portrait" width="500" height="375" /></a><p class="wp-caption-text">Half-face portrait</p></div>
<p>The first time we did this, we went out to the rural area, took pictures of about 16 kids and then spent an hour or two processing the pictures and printing. The processing involved:</p>
<ol>
<li> Importing the pictures to Picassa, straightening some of them and cropping others. (Yes, I know Picassa is not Free/Libre, but F-spot (in Ubuntu Hardy) is dog slow to display pictures and doesn&#8217;t have the straighten function).</li>
<li>Exporting to a directory, then opening each file in GIMP and cropping the right-or-left hand side of the face away.</li>
<li>Combine all the JPEG images into a PDF so they&#8217;re easy to print.</li>
</ol>
<p>The second time, we did the project at a school, for 60+ pupils. The straightening/cropping in Picassa took about ten minutes (since most of the pictures didn&#8217;t need much work). The open-crop-save-close process in GIMP took about thirty seconds per picture and was both repetitive and highly mouse intensive so that we both got hand cramps after a while.</p>
<p>So, after watching Alex do the process for a second class at the school, I decided there must be a better way: automatic face detection. Lo-and-behold, five minutes of Googling got me to <a href="http://torch3vision.idiap.ch/">Torch3Vision</a>, an image recognition toolkit with built-in face detection. It definitely works, but it takes quite a little setting up, so here&#8217;s a guide.</p>
<ol>
<li><a href="http://torch3vision.idiap.ch/downloads.php">Download Torch3Vision</a> and un-tar it: <span class="monospace">tar -zxf Torch3vision2.1.tgz</span></li>
<li>Build Torch3vision: <span class="monospace">cp Linux_i686.cfg.vision2.1 Linux_i686.cfg</span> <span class="monospace">./torch3make</span></li>
<li>Build the vison examples for face detection:<span class="monospace">cd vision2.1/examples/facedetect/</span><br />
<span class="monospace">../../../torch3make *.cc</span></li>
</ol>
<p>So now we have a working set of face-detection programmes. The command line interface isn&#8217;t too friendly, so they take a little playing around. For starters, the binaries on my Ubuntu system don&#8217;t read JPEG images (although the code seems to be there, the build system is non-standard and didn&#8217;t automatically pick up my jpeg libraries. So, I needed to convert my images to PPM format, which is one of those image formats that no-one uses but somehow is the lowest common denominator for image processing command line apps. I use the program &#8216;jpegtopnm&#8217; from package &#8216;netpbm&#8217;.</p>
<span class="monospace">jpegtopnm andy.jpg &gt; andy.ppm</span>
<p>Of the three facial detection programs available, I found &#8216;mlpcascadescan&#8217; to be the most effective and quickest, although they all have similar interfaces so this will basically be the same for all of them. We need to pass the source image and the model file, and we tell it to write the face position and to save a drawing with the face detected:</p>
<span class="monospace">mlpcascadescan andy.ppm -savepos -draw \<br />
-model ~/temp/models/mlp-cascade19&#215;19-20-2-110</span>
<p>This command takes about 20s to run on my creaky old laptop, and creates two files. One is a greyscale visualization of the face detected (the original image was colour):</p>
<div id="attachment_49" class="wp-caption aligncenter" style="width: 510px"><a href="http://ultrahigh.org/wp-content/uploads/2008/10/andy_500-detect.jpg"><img class="size-full wp-image-49" title="andy_500-detect" src="http://ultrahigh.org/wp-content/uploads/2008/10/andy_500-detect.jpg" alt="Face detected, more or less" width="500" height="375" /></a><p class="wp-caption-text">Face detected, more or less</p></div>
<p>The other file &#8216;andy.pos&#8217; contains the results of face detection. Line one is the number of detections, then each line has format <span class="monospace">x y w h</span>, very easy to parse.</p>
<span class="monospace">    FACE_POS=`head -n 2 &#8220;andy.pos | tail -n 1`<br />
FACE_X=`echo $FACE_POS | awk &#8216;{print $1}&#8217;`<br />
FACE_W=`echo $FACE_POS | awk &#8216;{print $3}&#8217;`<br />
FACE_CENTER=`echo $FACE_X + $FACE_W/2 | bc`</span>
<p>I played around with the step-factors in the x and y directions to shave a second or so off the face detection routine, the values I chose were 0.1 and 0.2 respectively (I don&#8217;t need any accuracy in the y direction really, since my use is to cut the face down the middle).</p>
<p>Then, since these are portrait photographs, I can speed up face detection by setting a minimum size for the face. I experimented and one sixth of the total image width gave good results - any larger and the face detection would fail with a crash. Adding this constraint provides better than 10X speed up, since the algorithm doesn&#8217;t waste time searching for small faces.</p>
<span class="monospace">WIDTH=`identify -format &#8220;%w&#8221; &#8220;andy.jpg&#8221;`<br />
MIN_FACE_WIDTH=`echo $WIDTH / 6 | bc`</span>
<p>So now here&#8217;s the final face detection command</p>
<span class="monospace">mlpcascadescan &#8220;$ppm&#8221; -dir /tmp/ -savepos -model $MODEL \<br />
-minWsize $MIN_FACE_WIDTH -stepxfactor $STEPX -stepyfactor $STEPY</span>
<p>And finally, as promised, I&#8217;ll tell you how to blank-out one side of the face: of course, using <a href="http://www.imagemagick.org/">Image Magick</a>. Using the &#8216;chop&#8217; or &#8216;crop&#8217; commands didn&#8217;t work for this purpose, where I wanted the image to keep it&#8217;s dimensions but have one half just be white. So I decided to draw a white rectangle over half of the picture.  I apply the image manipulation to the original JPEG file, not the temporary PPM file that I used to detect the face position.</p>
<span class="monospace">convert -fill white \<br />
-draw &#8220;rectangle $FACE_CENTER,0 $WIDTH,$HEIGHT&#8221; \<br />
&#8220;andy.jpg&#8221; &#8220;andy_half.jpg&#8221;</span>
<p>And here&#8217;s the final result:<a href="http://ultrahigh.org/wp-content/uploads/2008/10/andy_half.jpg"><img class="aligncenter size-full wp-image-53" title="andy_half" src="http://ultrahigh.org/wp-content/uploads/2008/10/andy_half.jpg" alt="" width="500" height="375" /></a></p>
<p><a href="http://code.ultrahigh.org/crop_center_face.sh">The script I am using</a> to tie this all together.</p>
<p>After processing all the portraits, I run a quick script to convert the jpegs to PDF and then join them into one master PDF file that I can easily print. The JPEG-PDF conversion uses Image Magick again (<span class="monospace">convert -rotate 90 file.jpg file.pdf</span>). Joining together many PDFs into one document is easy with &#8216;pdfjoin&#8217; from package &#8216;pdfjam&#8217; (<span class="monospace">pdfjoin $tempfiles &#8211;outfile jpg2pdf.pdf</span>). <a href="http://code.ultrahigh.org/jpg2pdf.sh">See the final jpg2pdf script.</a></p>
<p>But perhaps more enjoyable is to see the result after letting my limited creative talents loose:</p>
<div id="attachment_57" class="wp-caption aligncenter" style="width: 510px"><a href="http://ultrahigh.org/wp-content/uploads/2008/10/andy_finished_500.jpg"><img class="size-full wp-image-57" title="andy_finished_500" src="http://ultrahigh.org/wp-content/uploads/2008/10/andy_finished_500.jpg" alt="A work of staggering complexity." width="500" height="375" /></a><p class="wp-caption-text">A work of staggering complexity.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://ultrahigh.org/2008/10/14/command-line-face-detection/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Africa</title>
		<link>http://ultrahigh.org/2008/08/28/africa/</link>
		<comments>http://ultrahigh.org/2008/08/28/africa/#comments</comments>
		<pubDate>Thu, 28 Aug 2008 14:04:43 +0000</pubDate>
		<dc:creator>andy</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ultrahigh.org/?p=38</guid>
		<description><![CDATA[Having finished my PhD, Alex and I have moved to South Africa for a year to volunteer with a fantastic organization that supports community-based care of HIV/AIDS affected children. I&#8217;m intending to keep Ultrahigh around for posting geeky stuff, but we have also started a new blog about our travels and work in Africa. It&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>Having finished my PhD, Alex and I have moved to South Africa for a year to volunteer with <a href="http://africansolutions.org">a fantastic organization that supports community-based care of HIV/AIDS affected children</a>. I&#8217;m intending to keep Ultrahigh around for posting geeky stuff, but we have also started a new blog about our travels and work in Africa. It&#8217;s called <a title="Live Free or Braai Hard" href="http://africa.potatoriot.com">Live Free or Braai Hard</a> and you can find it at http://africa.potatoriot.com.</p>
]]></content:encoded>
			<wfw:commentRss>http://ultrahigh.org/2008/08/28/africa/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Rsync backups with secure ssh key</title>
		<link>http://ultrahigh.org/2008/05/13/rsync-backups-with-secure-ssh-key/</link>
		<comments>http://ultrahigh.org/2008/05/13/rsync-backups-with-secure-ssh-key/#comments</comments>
		<pubDate>Wed, 14 May 2008 02:54:50 +0000</pubDate>
		<dc:creator>andy</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://ultrahigh.org/?p=37</guid>
		<description><![CDATA[After today&#8217;s Debian/Ubuntu OpenSSH fiasco I decided to tighten security in my backup system. I added a single-purpose SSH key which only allows access to rsync on the backup source hosts.
The main logic in the program is the same as my earlier attempt, although I added a check that the machine I am about to [...]]]></description>
			<content:encoded><![CDATA[<p>After today&#8217;s <a href="http://www.ubuntu.com/usn/usn-612-1">Debian/Ubuntu OpenSSH fiasco</a> I decided to tighten security in <a href="http://ultrahigh.org/2007/02/28/my-backup-solution/">my backup system.</a> I added a single-purpose SSH key which only allows access to rsync on the backup source hosts.</p>
<p>The main logic in the program is the same as my earlier attempt, although I added a check that the machine I am about to rsync from is the right one (this would fail due to ssh keys anyway). The ping check I previously did before starting a backup was insufficient if my laptop was on my home LAN, where NAT gave it the same IP address as my home gateway machine.</p>
<p>The other new part is the ssh authentication improvement. In order to use that, you need to create a single purpose ssh key on the backup server:</p>
<span class="monospace">&#8217;ssh-keygen -t dsa&#8217; and save to $HOME/.ssh/rsync</span>
<p>Then edit the public part of the key (~/.ssh/rsync.pub) to limit the commands that can be run with this key. You would add this to the front of the key, with no spaces (the whole key should be on one line too):</p>
<span class="monospace">no-port-forwarding,no-X11-forwarding,no-agent-forwarding,<br />
no-pty,command=&#8221;/home/user/local/bin/secure-rsync.sh</span>
<p>This comes before the <span class="monospace"> ssh-dss</span> with a space before ssh-dss.</p>
<p>You will need to install this key in ~/.ssh/authorized_keys on the backup source machines, and also on those machines install the &#8216;<a href="http://http://code.ultrahigh.org/mybackup/secure-rsync.sh">secure-rsync&#8217; wrapper.</a> The secure rsync wrapper is from <a href="http://www.barryodonovan.com/misc/publications/lg/104/">Barry O&#8217;Donovan</a>, who has a thorough page explaining a very similar (but better!) backup system. The path in the public ssh key should correspond to this file. All this wrapper does is check that the command is a safe rsync command and start rsync:</p>
<pre class="syntax-highlight:bash">
#!/bin/sh
case &amp;amp;amp;quot;$SSH_ORIGINAL_COMMAND&amp;amp;amp;quot; in
    *\&amp;amp;amp;amp;amp;* | *\;* | *\|*)
        echo &amp;amp;amp;quot;Access denied&amp;amp;amp;quot;
        ;;
    rsync\ --server*)
        $SSH_ORIGINAL_COMMAND
        ;;
    hostname)
        $SSH_ORIGINAL_COMMAND
        ;;
    *)
        echo &amp;amp;amp;quot;Access denied&amp;amp;amp;quot;
        ;;
esac
</pre>
<p>Then you can use the<a href="http://code.ultrahigh.org/mybackup/mybackup.sh"> &#8216;mybackup&#8217; script</a> to run the backups, with a simple config file that is explained in the script comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://ultrahigh.org/2008/05/13/rsync-backups-with-secure-ssh-key/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Building ROOT for Debian Lenny (testing)</title>
		<link>http://ultrahigh.org/2008/05/13/building-root-for-debian-lenny-testing/</link>
		<comments>http://ultrahigh.org/2008/05/13/building-root-for-debian-lenny-testing/#comments</comments>
		<pubDate>Wed, 14 May 2008 01:42:33 +0000</pubDate>
		<dc:creator>andy</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Physics]]></category>

		<category><![CDATA[ROOT]]></category>

		<guid isPermaLink="false">http://ultrahigh.org/?p=36</guid>
		<description><![CDATA[Debian Lenny is currently the &#8216;testing&#8217; version, but it is pretty stable and that&#8217;s what my workstation runs at work. However the annoying bug I had before with libroot-python-dev is still present (short version: the package wants (python &#60; 2.5) but the version that ships with Lenny and Ubuntu Hardy is 2.5.)
Anyway, the easiest way [...]]]></description>
			<content:encoded><![CDATA[<p>Debian Lenny is currently the &#8216;testing&#8217; version, but it is pretty stable and that&#8217;s what my workstation runs at work. However the <a href="http://http://ultrahigh.org/2007/12/04/quickfix-libroot-python-dev-for-ubuntu-gutsy/">annoying bug I had before</a> with libroot-python-dev is still present (short version: the package wants (python &lt; 2.5) but the version that ships with Lenny and Ubuntu Hardy is 2.5.)</p>
<p>Anyway, the easiest way around it is to build the packages from source. So add this to your sources.list</p>
<code># Apt ROOT distribution.<br />
deb http://mirror.phy.bnl.gov/debian-root/ unstable main contrib<br />
deb-src http://mirror.phy.bnl.gov/debian-root/ unstable main contrib</code>
<p>Then do these commands</p>
<ul>
<li> <span class="monospace">mkdir temp/root/</span></li>
<li><span class="monospace">cd temp/root</span></li>
<li> <span class="monospace">apt-get source libroot-python-dev  </span> (this downloads the source)</li>
<li><span class="monospace">cd root-system-5.17.07</span></li>
</ul>
<p>Now we come up against another problem. The maxdb packages aren&#8217;t available in Lenny (I&#8217;m not sure why they were removed) but the source packages depend on them, so you&#8217;ll need to work around that. If the packages weren&#8217;t broken, you could do <code>apt-get build-dep libroot-plugin-python</code>. Instead, you can get the list of packages you need from <span class="monospace">debian/control</span>. Here&#8217;s the dependencies:</p>
<span class="monospace">apt-get install debhelper po-debconf libssl-dev comerr-dev libxpm-dev libfreetype6-dev libpcre3-dev zlib1g-dev python-dev libjpeg62-dev libpng12-dev libtiff4-dev libungif4-dev libxinerama-dev libpacklib1-dev gfortran libxmlrpc-c3-dev libxmlrpc-c-dev libcurl4-gnutls-dev fftw3-dev libkrb5-dev krb5-user libldap2-dev libgsl0-dev libmysqlclient15-dev libiodbc2-dev libglu1-xorg-dev libglu-dev ftgl-dev libpq-dev python-support libqt4-dev qt4-dev-tools ruby ruby-dev libxml2-dev</span>
<p>Now you have to edit the Debian control files to remove the maxdb dependencies.</p>
<p>Edit debian/rules, and</p>
<ul>
<li>Delete the &#8216;<span class="monospace">&#8211;enable-maxdb</span>&#8216; line. (You can&#8217;t comment it out in place, but you could move it down a few lines and comment it out there)</li>
<li>Comment out lines 35-45, just leaving &#8216;<span class="monospace">SAPDB = &#8211;disable-sapdb</span>&#8216;</li>
</ul>
<p>Edit debian/control to remove the dependency on libsqlod-dev in the first stanza and delete the entire root-plugin-maxdb stanza.</p>
<span class="monospace">mv debian/root-plugin-maxdb.install debian/root-plugin-maxdb.install.bak</span>
<p>If you like, you can edit debian/changelog and give it a new version number. The version extension must contain a digit, e.g.</p>
<code>root-system (5.17.07-1-ultrahigh1) unstable; urgency=low</code>
<p>Avoid this gotcha: I&#8217;d symlinked /usr/bin/gfortran to /usr/bin/gfortran4.3 for another project. ROOT&#8217;s config/Makefile.linux checks that gcc and gfortran are the same version, so I had to undo that symlink.</p>
<p>Build the packages:</p>
<code>dpk-buildbackage -rfakeroot</code>
<p>My build failed with this error but all of the packages seem to be there (including root-plugin-asimage, so I don&#8217;t know what it&#8217;s complaining about):</p>
<p><code>dpkg-genchanges -b &gt;../root-system_5.17.07-1-ultrahigh1_i386.changes<br />
dpkg-genchanges: binary-only upload - not including any source code<br />
dpkg-genchanges: failure: cannot fstat file ../root-plugin-asimage_5.17.07-1-ultrahigh_i386.deb: No such file or directory<br />
dpkg-buildpackage: failure: dpkg-genchanges gave error exit status 2</code><br />
And if you are too lazy to build the packages and you trust me (why would you!), you can <a href="http://code.ultrahigh.org/root/lenny-20080513">download my packages</a> which should install OK.</p>
]]></content:encoded>
			<wfw:commentRss>http://ultrahigh.org/2008/05/13/building-root-for-debian-lenny-testing/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Voice Over IP on Hardy</title>
		<link>http://ultrahigh.org/2008/05/08/voice-over-ip-on-hardy/</link>
		<comments>http://ultrahigh.org/2008/05/08/voice-over-ip-on-hardy/#comments</comments>
		<pubDate>Thu, 08 May 2008 23:56:14 +0000</pubDate>
		<dc:creator>andy</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Voice Over IP]]></category>

		<guid isPermaLink="false">http://ultrahigh.org/?p=34</guid>
		<description><![CDATA[In a separate post I talk about how Pulseaudio has broken some proprietary applications on Ubuntu Hardy. What&#8217;s worse is that many of the open source voice over IP clients (SIP, in particular) are broken on Hardy, which is a shame since Pulseaudio has been in the works for a while now and most major [...]]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://ultrahigh.org/2008/05/08/pulseaudio-problems-on-hardypulseaudio-problems-on-hardy/">a separate post I talk about how Pulseaudio has broken some proprietary applications</a> on Ubuntu Hardy. What&#8217;s worse is that many of the open source voice over IP clients (SIP, in particular) are broken on Hardy, which is a shame since Pulseaudio has been in the works for a while now and most major distributions are shipping it by default these days.</p>
<p>Here&#8217;s a list of the SIP clients that I have tried.</p>
<p><strong>Ekiga:</strong> Just doesn&#8217;t do any sound in the call when using ALSA-via-pulseaudio (a real shame since this is the most GNOME-flavoured app and I&#8217;d really expect it to work on Ubuntu).</p>
<p><strong>Gizmo:</strong> Ringing/Dialling noises work if you set &#8216;paplay %s&#8217; in the &#8220;Use command to play sounds&#8221; option. Audio in call is missing when using ALSA-via-pulseaudio. Won&#8217;t start with OSS using padsp.</p>
<p><strong>OpenWengo:</strong> This is barely maintained at the moment, it&#8217;s sad. And it&#8217;s tied into the Wengo side of things which seems to have fallen by the wayside (incoming SIP via voip.wengo.fr doesn&#8217;t work). I&#8217;d like to see the client return, open to multiple VOIP providers since it&#8217;s pretty solid software. But the microphone doesn&#8217;t seem to work in calls with pulseaudio at the moment!</p>
<p><strong>Twinkle:</strong> Confusing interface, but it does work. Set it to use OSS for audio input and output, set the ringing to use ALSA default device (which is pulseaudio) and start the program with &#8216;padsp twinkle&#8217;. Not ideal since you lose a lot of the benefits of Pulseaudio, but at least it works. Wish we had v1.2 in Hardy which figures out which network to use automatically - at the moment I need to restart the program if I move from wired to wireless.</p>
<p><strong>Empathy: </strong>Cool idea but SIP support isn&#8217;t really ready yet. The SIP configuration dialog is insufficient, it doesn&#8217;t offer all the fields you need to login to something like voxalot.com or FWD. Actually, that&#8217;s not Empathy&#8217;s fault but the &#8220;Mission Control&#8221; configuration app. Also, I&#8217;d like to get an audio ringing sound for incoming calls, and I can&#8217;t add SIP contacts via the main interface (it silently fails). I think Empathy is basically alpha software so I&#8217;m looking forward to these issues getting fixed - it has the promise of being the ultimate IM/SIP/Video client for GNOME.</p>
<p><strong>Linphone:</strong> Works pretty well! Use the default ALSA device (which is pulse) and you can take/recieve calls and the ringer works. Great! I have a few issues with the interface:  I&#8217;d love to see a tray icon and better visual ringing notification, but this is a solid app that actually works. Good stuff.</p>
]]></content:encoded>
			<wfw:commentRss>http://ultrahigh.org/2008/05/08/voice-over-ip-on-hardy/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Pulseaudio problems on Hardy</title>
		<link>http://ultrahigh.org/2008/05/08/pulseaudio-problems-on-hardy/</link>
		<comments>http://ultrahigh.org/2008/05/08/pulseaudio-problems-on-hardy/#comments</comments>
		<pubDate>Thu, 08 May 2008 23:54:16 +0000</pubDate>
		<dc:creator>andy</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://ultrahigh.org/?p=33</guid>
		<description><![CDATA[So Ubuntu 8.04 (Hardy) came out, and it rocks a lot. By default it enables the pulseaudio sound server, which also rocks but has caused a few of the &#8216;usual suspect&#8217; proprietary apps to fail even more than usual.
Skype
First: Skype. Skype is the bane of my existence, and judging from the way their developers rail [...]]]></description>
			<content:encoded><![CDATA[<p>So Ubuntu 8.04 (Hardy) came out, and it rocks a lot. By default it enables the pulseaudio sound server, which also rocks but has caused a few of the &#8216;usual suspect&#8217; proprietary apps to fail even more than usual.</p>
<h3>Skype</h3>
<p>First: Skype. <a href="http://www.nevis.columbia.edu/~oneill/contact/skype/">Skype is the bane of my existence</a>, and judging from <a href="http://forum.skype.com/index.php?showtopic=112021&amp;hl=pulseaudio">the way their developers rail against change on the forums</a>, Linux users like me are the bane of theirs. No sooner had they fixed their three-year avoidance of ALSA than we all move to a new system and theirs breaks. Well, actuallyour new system was supposed to work fine with ALSA apps, except they seem to have used ALSA in a weird way, which means that when you redirect your ALSA input and output to pulseaudio, Skype just ignores it and tries to access your hardware directly. Which breaks, because pulseaudio is using your hardware.</p>
<p>One <a href="http://http://ubuntuforums.org/showthread.php?t=686911">fix proffered on the Ubuntu forums</a> is to make pusleaudio use ALSA&#8217;s dmix, that way your pulse apps will have this chain app-&gt;pulse-&gt;dmix-&gt;hardware,whilst broken apps like Skype can be set to use app-&gt;dmix-&gt;hardware. And this fix <em>does</em> make Skype work OK&#8230; but it messes up everything else like audio players because pulse-over-dmix is crappy and uses all your CPU.</p>
<p>So here&#8217;s my fix for broken apps, and no, it&#8217;s not ideal. Guess what? It never will be while Skype is broken!</p>
<p>Run the Hardy stock setup with ALSA-over-pulse, but manually run pasuspender when you need to take/make a call. I have this script which is called from a button on my panel which I press.</p>
<code>#!/bin/sh</p>
<p># temporarily pause pulseaudio so I can use Skype or whatever<br />
pasuspender &#8212; /usr/bin/zenity &#8211;info &#8211;text &#8220;Click OK to resume Pulseaudio&#8221;</code>
<p>Works OK, although you won&#8217;t hear Skype ringing.</p>
<h3>Flash</h3>
<p>Next up, Flash. Flash on Linux just sucks, absolutely. In Hardy, as of this moment, if you install the library that allows Flash to do audio output over pulseaudio, the Flash will crash every time you do something unusual like, say, open a <a href="http://www.youtube.com/watch?v=HzS-OdWVpHo">frickin&#8217; hilarious YouTube video</a>, your browser will crash. Awesome huh! In fact, you can alleviate this by <a href="https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/192888/comments/39">installing nspluginwrapper</a>, in which case you will just have a gray square instead of your YouTube video. Also awesome.</p>
<p>My workaround for this is&#8230; just hit refresh a billion times until Flash stops sucking and plays the stupid video. It&#8217;s some sort of race condition between Flash and libflashsupport, at least <a href="http://www.pulseaudio.org/ticket/267">that&#8217;s what the Pulseaudio developers claim</a>. Lame!</p>
<h3>Every Voice-over-IP App, ever</h3>
<p>WTF guys! We all knew Pulse was coming for over a year&#8230; so why is it so hard to find a SIP client that works in Hardy?  <a href="http://ultrahigh.org/2008/05/08/voice-over-ip-on-hardyvoice-over-ip-on-hardy/">Check out my other post for listings of what&#8217;s broken about the different clients.</a> Short answer: Linphone works well, Twinkle can be coaxed into working.</p>
]]></content:encoded>
			<wfw:commentRss>http://ultrahigh.org/2008/05/08/pulseaudio-problems-on-hardy/feed/</wfw:commentRss>
		</item>
		<item>
		<title>One Keyboard, Two Computers: x2x Over SSH</title>
		<link>http://ultrahigh.org/2008/03/19/one-keyboard-two-computers-x2x-over-ssh/</link>
		<comments>http://ultrahigh.org/2008/03/19/one-keyboard-two-computers-x2x-over-ssh/#comments</comments>
		<pubDate>Thu, 20 Mar 2008 03:43:30 +0000</pubDate>
		<dc:creator>andy</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://ultrahigh.org/2008/03/19/one-keyboard-two-computers-x2x-over-ssh/</guid>
		<description><![CDATA[I just set up my laptop at work as a docked second screen next to my main workstation (yeah, I know, procrastination central). I wanted to use the network to control the second machine (laptop) from the nice keyboard of my workstation. I knew I could do it because I use to use x2x when [...]]]></description>
			<content:encoded><![CDATA[<p>I just set up my laptop at work as a docked second screen next to my main workstation (yeah, I know, procrastination central). I wanted to use the network to control the second machine (laptop) from the nice keyboard of my workstation. I knew I could do it because I use to use <a href="http://x2x.dottedmag.net/">x2x</a> when we had the remote HiRes station here (4 old junker PCs with one or two screens each, two keyboard/mice setups).</p>
<p>For some reason I was trying to use <a href="http://synergy2.sourceforge.net/">synergy</a>, which is completely insecure. The only advice offered on the synergy site about securing it was setting up port forwarding via ssh first, then connecting over those ports. Yuck.</p>
<p>Anyway, since ssh automatically forwards X11 connections, it&#8217;s dead easy to use x2x for this task in a secure way (with all the usual nice stuff like ssh key authentication too).</p>
<p>On my wokstation, with my laptop to the right, I run the command<br />
<code>ssh -X laptop "x2x -east -to :0"</code></p>
<p>That&#8217;s it. Run the mouse over to the right hand side of teh workstation screen, it travels over to the laptop screen. Even X middle-click cut-n-paste works. Sweet.</p>
<p>Oh, well, one more cool thing, if you have <a href="http://fuse.sourceforge.net/sshfs.html">sshfs</a> installed (and fuse, and have added yourself to the fuse group, and re-logged in, and loaded the fuse module&#8230;), you can do this to automatically cross-mount the laptop home directory on your workstation:</p>
<pre>
#!/bin/sh
# Tunnel a x2x connection to a second machine, presumed to be at
# the right of this machine's screen.

host="$1"
mount_dir="$HOME/$host"
direction="east"  # west means the OTHER screen is to the left

echo "Creating $mount_dir"
mkdir -p $mount_dir
echo "Mounting remote machine at $mount_dir"
sshfs cactus: $mount_dir

echo "Connecting to remote machine for x2x over ssh"
ssh -X $host "x2x -$direction -to :0"

# after ctrl-C killing above session, clean up sshfs stuff
# sshfs automatically unmounts when you ctrl-C out of above command
echo "Removing mount point"
rmdir $mount_dir
</pre>
<p>Thank you to the developers of FUSE, sshfs and x2x&#8230; You rock!</p>
]]></content:encoded>
			<wfw:commentRss>http://ultrahigh.org/2008/03/19/one-keyboard-two-computers-x2x-over-ssh/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Pastels</title>
		<link>http://ultrahigh.org/2008/02/15/the-pastels/</link>
		<comments>http://ultrahigh.org/2008/02/15/the-pastels/#comments</comments>
		<pubDate>Fri, 15 Feb 2008 21:36:58 +0000</pubDate>
		<dc:creator>andy</dc:creator>
		
		<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://ultrahigh.org/2008/02/15/the-pastels/</guid>
		<description><![CDATA[I just discovered the Pastels, in particular the best-of Truckload of Trouble. Fantastic!

I&#8217;m going to look at the whole C86 &#8217;scene&#8217; since they are supposed to be so representive of that sound, in particular the first Primal Scream album Sonic Flower Groove seems interesting. It is supposed to be very Byrds-esque and apparently was a [...]]]></description>
			<content:encoded><![CDATA[<p>I just discovered the Pastels, in particular the best-of <em>Truckload of Trouble</em>. Fantastic!</p>
<p><img src='http://ultrahigh.org/wp-content/uploads/2008/02/truckload.png' alt='Truckload of Trouble' /></p>
<p>I&#8217;m going to look at the whole C86 &#8217;scene&#8217; since they are supposed to be so representive of that sound, in particular the first Primal Scream album <em>Sonic Flower Groove</em> seems interesting. It is supposed to be very Byrds-esque and apparently was a major influence on early Stone Roses.</p>
<p><img src='http://ultrahigh.org/wp-content/uploads/2008/02/primalscream1987sonicflowergroovemd1.gif' alt='Sonic Flower Groove' /></p>
<p>Until today I only really knew Primal Scream from after <em>Screamadelica</em> onwards. I can&#8217;t decide if this album cover is more or less embarrassing for them than the confederate flag on <a href="http://www.allmusic.com/cg/amg.dll?p=amg&#038;sql=10:kjftxqegld6e"><em>Give Out</em></a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ultrahigh.org/2008/02/15/the-pastels/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
