<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-7540010223464953438</id><updated>2009-11-17T18:51:16.328-06:00</updated><title type='text'>Konstantin Läufer's Blog</title><subtitle type='html'>Konstantin Läufer's blog on stuff, possibly including technology, music, travel, sports, and other areas of interest to me</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://laufer.cs.luc.edu/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default?orderby=updated'/><link rel='alternate' type='text/html' href='http://laufer.cs.luc.edu/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Konstantin</name><uri>http://www.blogger.com/profile/07858403962357318797</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7540010223464953438.post-1332070328129603876</id><published>2009-09-20T14:10:00.004-05:00</published><updated>2009-10-18T00:07:38.970-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openwrt'/><category scheme='http://www.blogger.com/atom/ns#' term='osx'/><category scheme='http://www.blogger.com/atom/ns#' term='computing'/><title type='text'>Prerequisites for Building OpenWrt SDK on Snow Leopard</title><content type='html'>&lt;span style="font-family: 'Lucida Grande', sans-serif; font-size: medium;"&gt;&lt;span style="font-size: 14px; line-height: 15px; white-space: pre-wrap;"&gt;These are the prerequisites: &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: 'Lucida Grande', sans-serif; font-size: medium;"&gt;&lt;span style="font-size: 14px; line-height: 15px; white-space: pre-wrap;"&gt;Case-sensitive file system!&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Lucida Grande', sans-serif; font-size: 14px; line-height: 15px; white-space: pre-wrap;"&gt;sudo port install gcc45 binutils gpatch bzip2 flex bison gmake gettext pkgconfig unzip libzip wget coreutils gawk findutils getopt gnutar md5sha1sum&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Lucida Grande', sans-serif; font-size: medium;"&gt;&lt;span style="font-size: 14px; line-height: 15px; white-space: pre-wrap;"&gt;sudo su - &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Lucida Grande', sans-serif; font-size: medium;"&gt;&lt;span style="font-size: 14px; line-height: 15px; white-space: pre-wrap;"&gt;cd /opt/local/bin&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Lucida Grande', sans-serif; font-size: medium;"&gt;&lt;span style="font-size: 14px; line-height: 15px; white-space: pre-wrap;"&gt;ln -s gnutar tar   # otherwise it won't find it&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span style="font-family: 'Lucida Grande', sans-serif; font-size: medium;"&gt;&lt;span style="font-size: 14px; line-height: 15px; white-space: pre-wrap;"&gt;I just got done building the OpenWrt&amp;nbsp;SDK Kamikaze 8.09.1 with these tools on Mac OS X 10.6.1&amp;nbsp;Snow Leopard.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7540010223464953438-1332070328129603876?l=laufer.cs.luc.edu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laufer.cs.luc.edu/feeds/1332070328129603876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7540010223464953438&amp;postID=1332070328129603876' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/1332070328129603876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/1332070328129603876'/><link rel='alternate' type='text/html' href='http://laufer.cs.luc.edu/2009/09/prerequisites-for-building-openwrt-sdk.html' title='Prerequisites for Building OpenWrt SDK on Snow Leopard'/><author><name>Konstantin</name><uri>http://www.blogger.com/profile/07858403962357318797</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01678707315460052671'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7540010223464953438.post-732978428869270105</id><published>2009-09-17T16:11:00.013-05:00</published><updated>2009-10-18T00:06:58.145-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='openwrt'/><category scheme='http://www.blogger.com/atom/ns#' term='printing'/><category scheme='http://www.blogger.com/atom/ns#' term='nslu2'/><category scheme='http://www.blogger.com/atom/ns#' term='zeroconf'/><category scheme='http://www.blogger.com/atom/ns#' term='computing'/><title type='text'>Linksys NSLU2 OpenWrt Sharing Multiple USB Printers</title><content type='html'>Most of the information required to share USB printers with OpenWrt is available &lt;a href="http://oldwiki.openwrt.org/OpenWrtDocs(2f)Kamikaze(2f)Printers.html"&gt;here&lt;/a&gt;. I am just going to document a few details not covered in that document.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I had to write my own hotplug script, &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;/etc/hotplug.d/usb/20-usb-printers&lt;/span&gt;, for giving the printers fixed symbolic links.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;create_link()&lt;br /&gt;{&lt;br /&gt; SYS_DEVDIR=/sys"$DEVPATH"/usb&lt;br /&gt; LP=`ls $SYS_DEVDIR`&lt;br /&gt; if [ ! -d "$SYS_DEVDIR/$LP" ]; then&lt;br /&gt;  exit &lt;br /&gt; fi&lt;br /&gt; REAL_DEV=/dev/`basename "$SYS_DEVDIR/$LP"`&lt;br /&gt; rm -f "$1"&lt;br /&gt; ln -s "$REAL_DEV" "$1"&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;process_action()&lt;br /&gt;{&lt;br /&gt; case "$ACTION" in&lt;br /&gt;  remove)&lt;br /&gt;   rm -f "$1"&lt;br /&gt;   ;;&lt;br /&gt;  add)&lt;br /&gt;   create_link "$1"&lt;br /&gt;   ;;&lt;br /&gt; esac&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;case "$PRODUCT" in&lt;br /&gt;&lt;br /&gt; "4b8/5/100") # EPSON C80&lt;br /&gt;  process_action "/dev/inkjet"&lt;br /&gt;  ;;&lt;br /&gt;&lt;br /&gt; "4f9/28/100") # BROTHER HL-2040&lt;br /&gt;  process_action "/dev/laser"&lt;br /&gt;  ;;&lt;br /&gt;&lt;br /&gt;esac&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;In addition, I created an init script, &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;/etc/init.d/usbprinters&lt;/span&gt;, to make sure the links are also created when coldplugging the printers. Run &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;/etc/init.d/usbprinters enable&lt;/span&gt;&amp;nbsp;once after creating the script.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;#!/bin/sh /etc/rc.common&lt;br /&gt;&lt;br /&gt;START=39&lt;br /&gt;start() {&lt;br /&gt; [ -d /proc/bus/usb ] &amp;amp;&amp;amp; {&lt;br /&gt;  /sbin/udevtrigger --subsystem-match=usb --attr-match=bInterfaceClass=*7*&lt;br /&gt; }  &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Using these fixed symbolic links, &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;/etc/config/p910nd&lt;/span&gt; now always exposes each printer on the same port:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;config p910nd&lt;br /&gt; option device        /dev/laser&lt;br /&gt; option port          0&lt;br /&gt; option bidirectional 1&lt;br /&gt; option enabled       1&lt;br /&gt;&lt;br /&gt;config p910nd&lt;br /&gt; option device        /dev/inkjet&lt;br /&gt; option port          1&lt;br /&gt; option bidirectional 1&lt;br /&gt; option enabled       1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I could not get avahi-daemon to work for advertising the printers via Zeroconf. Instead, I am using the no longer supported howl-mdnsresponder package (version 1.0.0-1). My&amp;nbsp;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;/etc/mDNSResponder.conf&lt;/span&gt; looks like this.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;"Brother HL-2040 series" _pdl-datastream._tcp local. 9100 "txtvers=1" "note=Office" "product=(HL-2040 series)"&lt;br /&gt;"Epson Stylus C80"  _pdl-datastream._tcp local. 9101 "txtvers=1" "note=Office" "product=(Epson Stylus C80)"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The idea is to use the product name that matches the product key in the PPD file on the client so that the client automatically suggests the right driver.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I manually downloaded and installed recent versions of ink and libinklevel from &lt;a href="http://ipkg.nslu2-linux.org/feeds/openwrt/unstable/packages/target-armeb_uClibc-0.9.30.1/"&gt;this repository&lt;/a&gt;, and now ink works with my Epson Stylus C80! I am using &lt;a href="http://asterizmo.googlecode.com/files/status-usb.sh"&gt;this script&lt;/a&gt; to see the ink levels as a bar chart in X-Wrt &amp;gt; Status &amp;gt; USB.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7540010223464953438-732978428869270105?l=laufer.cs.luc.edu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laufer.cs.luc.edu/feeds/732978428869270105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7540010223464953438&amp;postID=732978428869270105' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/732978428869270105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/732978428869270105'/><link rel='alternate' type='text/html' href='http://laufer.cs.luc.edu/2009/09/linksys-nslu2-openwrt-sharing-multiple.html' title='Linksys NSLU2 OpenWrt Sharing Multiple USB Printers'/><author><name>Konstantin</name><uri>http://www.blogger.com/profile/07858403962357318797</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01678707315460052671'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7540010223464953438.post-661349701326899011</id><published>2008-10-23T19:42:00.008-05:00</published><updated>2009-09-18T00:02:33.441-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='dvr'/><category scheme='http://www.blogger.com/atom/ns#' term='computing'/><title type='text'>Hauppauge Win-TV-HVR-950Q Works With Ubuntu Hardy on Mac Mini G4</title><content type='html'>I have had a very robust MythTV setup since spring 2005 using a Hauppauge &lt;a href="http://www.hauppauge.com/pages/products/data_pvr150mce.html"&gt;WinTV-PVR-150 Media Center edition&lt;/a&gt;. Given the impending conversion to ATSC digital TV in February 2009, I ordered a Hauppauge &lt;a href="http://www.hauppauge.com/site/products/data_hvr950q.html"&gt;WinTV-HVR-950Q&lt;/a&gt; external USB digital TV capture device.&lt;br /&gt;&lt;br /&gt;Meanwhile, to reduce noise, heat, and power consumption, I am also switching from an i386-based workstation/server to an almost silent Mac Mini PowerPC G4 1.25 GHz running Ubuntu Hardy server with the lightweight &lt;a href="http://www.xubuntu.org/"&gt;Xubuntu&lt;/a&gt; desktop.&lt;br /&gt;&lt;br /&gt;Today, I received the 950Q and was able to install it on the Mini without any trouble following Scott Bronson's &lt;a href="http://lunapark6.com/usb-hdtv-tuner-stick-for-windows-linux-hauppauge-wintv-hvr-950.html"&gt;detailed instructions&lt;/a&gt; to the letter. Thanks, Scott, for providing these wonderful, accurate instructions!&lt;br /&gt;&lt;br /&gt;The Mini is too slow to play live video without mplayer's -framedrop option, but it is mostly a server anyway. The next step is to configure MythTV to record from the 950Q...no problem.&lt;br /&gt;&lt;br /&gt;Meanwhile, I have upgraded all my systems to Jaunty, where the device is supported out of the box once you copy the firmware to /lib/firmware. Please see my recent comment for more details.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7540010223464953438-661349701326899011?l=laufer.cs.luc.edu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laufer.cs.luc.edu/feeds/661349701326899011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7540010223464953438&amp;postID=661349701326899011' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/661349701326899011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/661349701326899011'/><link rel='alternate' type='text/html' href='http://laufer.cs.luc.edu/2008/10/hauppauge-win-tv-hvr-950q-works-with.html' title='Hauppauge Win-TV-HVR-950Q Works With Ubuntu Hardy on Mac Mini G4'/><author><name>Konstantin</name><uri>http://www.blogger.com/profile/07858403962357318797</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01678707315460052671'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7540010223464953438.post-2437356800893413332</id><published>2007-02-22T23:29:00.000-06:00</published><updated>2009-09-17T16:16:51.833-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='osx'/><category scheme='http://www.blogger.com/atom/ns#' term='computing'/><title type='text'>OS X software essentials</title><content type='html'>&lt;p&gt; The purpose of this list is to help me remember what to reinstall after a disk crash (a frequent occurrence on my 2002 PowerBook Titanium). As a side effect, I am hoping that other OS X users find it to be a useful starting point for choosing the software they need.&lt;/p&gt; &lt;p&gt; Although the list focuses on open-source or otherwise free software, payware is included in exceptional cases.&lt;/p&gt; The following categories lead to the corresponding sections of my del.icio.us bookmarks.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/klaufer/osx%2Bsoftware%2Bessential%2Bdevelopment"&gt;Development&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://del.icio.us/klaufer/osx%2Bsoftware%2Bessential%2Bgames"&gt;Games&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://del.icio.us/klaufer/osx%2Bsoftware%2Bessential%2Binternet"&gt;Internet&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://del.icio.us/klaufer/osx%2Bsoftware%2Bessential%2Bmultimedia"&gt;Multimedia&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://del.icio.us/klaufer/osx%2Bsoftware%2Bessential%2Bwriting"&gt;Writing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://del.icio.us/klaufer/osx%2Bsoftware%2Bessential%2Butilities"&gt;Utilities&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://del.icio.us/klaufer/osx%2Bsoftware%2Bessential%2Bundereval"&gt;Under consideration&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7540010223464953438-2437356800893413332?l=laufer.cs.luc.edu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laufer.cs.luc.edu/feeds/2437356800893413332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7540010223464953438&amp;postID=2437356800893413332' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/2437356800893413332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/2437356800893413332'/><link rel='alternate' type='text/html' href='http://laufer.cs.luc.edu/2007/02/os-x-software-essentials.html' title='OS X software essentials'/><author><name>Konstantin</name><uri>http://www.blogger.com/profile/07858403962357318797</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01678707315460052671'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7540010223464953438.post-7788534073956910361</id><published>2007-01-25T23:33:00.000-06:00</published><updated>2009-09-17T16:16:51.833-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='netbeans'/><category scheme='http://www.blogger.com/atom/ns#' term='computing'/><title type='text'>NetBeans 5.5 UML support not ready for prime time</title><content type='html'>What a disappointment. I should have tested it better before having my concurrency class use it for modeling dynamic behavior with state diagrams. I could not find a way to set the trigger, guard, and effect of a transition. It seems to have only name, precondition, and postcondition, and doesn't format these elements properly. I know it's still in beta but didn't expect it to suck this much. I will probably have to go back to Poseidon instead.&lt;br /&gt;&lt;br /&gt;In addition, NetBeans has poor CVS and SVN support compared to Eclipse.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7540010223464953438-7788534073956910361?l=laufer.cs.luc.edu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laufer.cs.luc.edu/feeds/7788534073956910361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7540010223464953438&amp;postID=7788534073956910361' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/7788534073956910361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/7788534073956910361'/><link rel='alternate' type='text/html' href='http://laufer.cs.luc.edu/2007/01/netbeans-55-uml-support-not-ready-for.html' title='NetBeans 5.5 UML support not ready for prime time'/><author><name>Konstantin</name><uri>http://www.blogger.com/profile/07858403962357318797</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01678707315460052671'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7540010223464953438.post-941715143847932355</id><published>2008-09-12T12:21:00.087-05:00</published><updated>2009-09-17T16:16:51.832-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='telephony'/><category scheme='http://www.blogger.com/atom/ns#' term='voip'/><category scheme='http://www.blogger.com/atom/ns#' term='asterisk'/><category scheme='http://www.blogger.com/atom/ns#' term='phone'/><category scheme='http://www.blogger.com/atom/ns#' term='consumer'/><category scheme='http://www.blogger.com/atom/ns#' term='computing'/><title type='text'>Dude, You're Getting VoIP: Moving Past POTS</title><content type='html'>&lt;h2 id="a8rw"&gt;AKA a case against gardening&lt;/h2&gt;&lt;br /&gt;My colleague &lt;a href="http://gkt.etl.luc.edu/"&gt;George&lt;/a&gt; and I had been toying for a long time with the idea of getting rid of POTS ("plain old telephone service", more properly called PSTN for &lt;span style="font-style: italic;"&gt;public switched telephone network&lt;/span&gt;&lt;span style="font-style: italic;"&gt;)&lt;/span&gt; at home and were considering different alternatives. An obvious one is to get lots of minutes or unlimited calling on your cell phone—now on option on the major carriers. But that might not be the most effective approach because the network gets overloaded, the call quality is inconsistent, and international rates are sky-high (unless you are using a suitable calling card). Your brain might also get fried if you are not using a headset. But after several months in a row of local phone bills in the high double digits, we knew we had to do something soon.&lt;br /&gt;&lt;br /&gt;Because we were already paying for a broadband connection (cable modem, in both cases, though ADSL will work fine), we have a big communication pipe coming into our homes. That pipe should be able to handle occasional voice traffic in addition to other uses of the internet, shouldn't it? This is where VoIP &lt;span style="font-style: italic;"&gt;(voice over internet protocol)&lt;/span&gt; comes into the picture (see voip-info.org, an excellent resource on all aspects of this topic). Most people are already familiar with &lt;a href="http://www.skype.com/"&gt;Skype&lt;/a&gt;, primarily a software client for free voice and video calls from computer to computer using a proprietary protocol but requiring only minimal, if any, configuration. There is also &lt;a href="http://gizmo5.com/"&gt;Gizmo5&lt;/a&gt;, which now supports video on its Windows and Mac versions and is compatible with the SIP &lt;span style="font-style: italic;"&gt;(session initiation protocol)&lt;/span&gt; standard. These and other providers also have (non-free, usually prepaid) ways to make or receive calls to and from the PSTN, e.g., SkypeOut and SkypeIn. There are various open-source or free proprietary SIP soft phones available for different operating systems, including &lt;a href="http://www.twinklephone.com/"&gt;Twinkle&lt;/a&gt; for Linux and &lt;a href="http://xmeeting.sourceforge.net/"&gt;XMeeting&lt;/a&gt; for Mac OS.&lt;br /&gt;&lt;br /&gt;But both of us were looking for something more: a seamless drop-in replacement for the conventional home phone service that particularly our spouses enjoys so much. Specifically, we wanted the existing phones to ring when a call came in while no one was using the computer, and we wanted to be able to make outgoing calls from the existing phones. An ATA &lt;span style="font-style: italic;"&gt;(analog telephone adapter)&lt;/span&gt; bridges this gap: these devices typically have an LAN connection as well as a phone jack where you can plug in a phone and get a dial tone. And now we've reached a junction where we could choose between the easy and the hard way to continue.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;The easy way&lt;/h2&gt;&lt;br /&gt;George choose the easy way: He signed up with &lt;a href="http://www.phonepower.com/"&gt;PhonePower.com&lt;/a&gt;, a consumer-oriented VoIP provider (reviews are available at, e.g., &lt;a href="http://www.voipreview.org/"&gt;voipreview.org&lt;/a&gt;), received a preconfigured ATA, connected power, Ethernet, and a cordless phone, and was ready to go. Once his spouse approved, he instructed the VoIP provider to port his existing number and canceled his land line. Many providers have flat nationwide packages for US$20 per month or less, and you can use your ATA in other locations around the world as long as you have an internet connection. Some providers even have regular E911 service, where the emergency call taker automatically sees your address and handles the call accordingly. In case of a power failure, however, your internet connection would be down and you might not be able to make that call. In that case, your best bet would be your cell phone, given the slim likelihood of both networks failing independently at the same time.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;The kewl way&lt;/h2&gt;&lt;br /&gt;Needless to say, I choose the hard but kewl way and in return wanted free service (no recurring monthly charge) and the opportunity to reuse as much existing hardware as possible. As an aside, when I mentioned to my friend Hans-Jürgen a few years ago that I was planning to play with a software-based phone system at home, he said I had too much time on my hands. But now I realized that we simply have different hobbies. I enjoy these activities much more than, say, gardening.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Receiving calls&lt;/h2&gt;&lt;br /&gt;The first step was to set up DID &lt;span style="font-style: italic;"&gt;(direct inward dialing)&lt;/span&gt; so others could reach me from the PSTN. Most providers have a single-digit monthly charge for DID, but Matt Butcher, a technologically savvy philosophy graduate student, told me about a service called &lt;a href="http://www.grandcentral.com/"&gt;GrandCentral&lt;/a&gt;. Whether or not you are using VoIP, GrandCentral is useful as a &lt;span style="font-style: italic;"&gt;single-number service&lt;/span&gt; (SNS): a caller dials a single number, zero or more phones—home, work, cell, according to your configuration settings—ring at once, and you can pick up the call on any one of them. You can also send calls to voice mail, listen in while someone is leaving you a message, switch to another phone during the call, etc. You can even customize by caller which of your phones ring. The catch is that GrandCentral used to have an invite-only private beta program that has since been discontinued, but they haven't yet announced when they will open to the general public. Since GrandCentral was recently acquired by Google, I am hopeful that it won't go away, but for now, you will probably have to pay for DID if you want a local number; in return, you can probably port your existing number. So what makes GrandCentral work as DID for VoIP? The ability to forward calls not only to PSTN numbers but also to Gizmo5 numbers! I was already able to make and receive SIP calls through my existing Gizmo5 account, but now others can call my GrandCentral number from an ordinary phone, and it rings on my Gizmo5 soft phone. So that part is solved!&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Making calls&lt;/h2&gt;&lt;br /&gt;Like SkypeOut, Gizmo5 also supports outbound calling into the PSTN as a prepaid service with no recurring charges and reasonable international rates. As an optimization, I am using &lt;a href="http://www.future-nine.com/"&gt;Future Nine&lt;/a&gt;, a reliable VoIP provider with very competitive rates for outbound calling. Another advantage of Future Nine is that you can set the caller ID for outgoing calls to your GrandCentral number for free. You can even have multiple SIP accounts as part of a single VoIP account with separate caller IDs for outgoing calls; this capability is useful to me because my wife and I have different GrandCentral numbers. In addition, your Future Nine account works like a calling card. As a further optimization, I set up free toll-free and &lt;a href="http://gizmo5.com/pc/backdoor/"&gt;free VoIP backdoor calling&lt;/a&gt;  through Gizmo5. Since you can't call back a Gizmo SIP number from outside, I also decided to pay Gizmo5 US$4 per year for letting me set the caller ID on that account to my GrandCentral number as well.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Connecting existing analog phones&lt;/h2&gt;&lt;br /&gt;The next big step was to bring the analog phones back on board, since SIP phones are rather expensive. A while ago, I had bought a &lt;a href="http://www.digium.com/en/products/analog/s101i.php"&gt;Digium S101I IAXy&lt;/a&gt; ATA but never used it. If I had DID from Future Nine or another provider that supports the IAX protocol &lt;span style="font-style: italic;"&gt;(Inter-Asterisk eXchange)&lt;/span&gt;, I could provision the IAXy to connect directly with my Future Nine account. That would be just like George's easy approach described above. (&lt;a href="http://www.linksys.com/servlet/Satellite?c=L_Product_C1&amp;amp;childpagename=US%2FLayout&amp;amp;cid=1118334687006&amp;amp;pagename=Linksys%2FCommon%2FVisitorWrapper&amp;amp;lid=8700608483L06"&gt;Linksys&lt;/a&gt;, formerly known as Sipura, &lt;a href="http://www.grandstream.com/ata.html"&gt;Grandstream&lt;/a&gt;, and several others make high-quality SIP-compatible ATAs.) But my situation is more complicated because it involves different accounts for incoming and outgoing calls and Gizmo5 speaks SIP but not IAX. Rescue comes in the form of a &lt;span style="font-style: italic;"&gt;software telephony engine&lt;/span&gt; such as Asterisk (&lt;a href="http://www.asterisk.org/"&gt;asterisk.org&lt;/a&gt;, excellent tips and tricks at &lt;a href="http://www.nerdvittles.com/"&gt;nerdvittles.com&lt;/a&gt;), an open-source system from Digium. Asterisk (and similar systems such as &lt;a href="http://yate.null.ro/"&gt;Yate&lt;/a&gt; or &lt;a href="http://www.freeswitch.org/"&gt;FreeSWITCH&lt;/a&gt;) are full-featured software equivalents of PBX systems handling voice mail, music on hold, etc. But since GrandCentral provides all the features already, we need only a minimal Asterisk installation that handles registration and call routing among the different pieces:&lt;br /&gt;&lt;ul id="ya5m1"&gt;&lt;li id="ya5m2"&gt;SIP registration with one or more Gizmo5 accounts for incoming calls from GrandCentral and free outgoing calls to other Gizmo5 users, toll-free numbers, and VoIP backdoor numbers.&lt;pre&gt;[general]&lt;br /&gt;context=incoming&lt;br /&gt;dtmfmode=rfc2833 ; required to answer incoming GrandCentral calls&lt;br /&gt;srvlookup=yes&lt;br /&gt;register =&gt; 1747NXXNXXX:password@proxy01.sipphone.com/1747NXXNXXX&lt;br /&gt;&lt;br /&gt;[gizmo]&lt;br /&gt;type=peer&lt;br /&gt;disallow=all&lt;br /&gt;allow=ulaw&lt;br /&gt;allow=ilbc&lt;br /&gt;host=proxy01.sipphone.com&lt;br /&gt;fromdomain=proxy01.sipphone.com&lt;br /&gt;insecure=very&lt;br /&gt;fromuser=1747NXXNXXX&lt;br /&gt;authuser=1747NXXNXXX&lt;br /&gt;username=1747NXXNXXX&lt;br /&gt;secret=password&lt;br /&gt;canreinvite=no&lt;br /&gt;context=incoming&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li id="z53m"&gt;SIP credentials for using Future Nine for other outgoing calls.&lt;pre&gt;[future-nine]&lt;br /&gt;context=default&lt;br /&gt;type=peer&lt;br /&gt;host=sip.future-nine.com&lt;br /&gt;username=username&lt;br /&gt;secret=password&lt;br /&gt;qualify=no&lt;br /&gt;insecure=invite&lt;br /&gt;canreinvite=no&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li id="ytrf"&gt;IAX configuration for the IAXy ATA.&lt;pre&gt;[myiaxy]&lt;br /&gt;context=default&lt;br /&gt;type=friend&lt;br /&gt;accountcode=myiaxy&lt;br /&gt;host=dynamic&lt;br /&gt;secret=password&lt;br /&gt;disallow=all&lt;br /&gt;allow=ulaw&lt;br /&gt;allow=adpcm&lt;br /&gt;callerid="My Name" x1111&lt;br /&gt;trunk=no&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li id="k115"&gt;SIP configuration for any softphones for in-house calling (optional).&lt;pre&gt;[1117]&lt;br /&gt;context=default&lt;br /&gt;type=friend&lt;br /&gt;username=1117&lt;br /&gt;callerid="My Name" x1117&lt;br /&gt;host=dynamic&lt;br /&gt;canreinvite=no&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li id="srbu"&gt;Dial plan rules for making the IAXy (and registered softphones) ring on incoming calls.&lt;pre&gt;[incoming]&lt;br /&gt;exten =&gt; 1747NXXNXXX,n,Dial(SIP/1117&amp;amp;IAX2/192.168.1.50@myiaxy/s)&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li id="swhy"&gt;Dial plan rules for mapping dialed numbers to the right provider for outgoing calls.&lt;pre&gt;[gizmo]&lt;br /&gt;exten =&gt; _1747XXXXXXX,1,Dial(SIP/${EXTEN}@gizmo)&lt;br /&gt;exten =&gt; _0101NXXNXXXXXX,1,Dial(SIP/${EXTEN}@gizmo)&lt;br /&gt;&lt;br /&gt;[local]&lt;br /&gt;exten =&gt; _NXXXXXX,1,Dial(SIP/1773${EXTEN}@$gizmo)&lt;br /&gt;&lt;br /&gt;[tollfree]&lt;br /&gt;exten =&gt; _1800XXXXXXX,1,Dial(SIP/${EXTEN}@gizmo)&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;[domestic]&lt;br /&gt;exten =&gt; _1NXXNXXXXXX,1,Dial(SIP/${EXTEN}@$futurenine)&lt;br /&gt;&lt;br /&gt;[international]&lt;br /&gt;exten =&gt; _011X.,1,Dial(SIP/${EXTEN:3}@futurenine)&lt;br /&gt;&lt;br /&gt;[intercom]&lt;br /&gt;exten =&gt; s,1,Set(CALLERID(all)=Lobby Phone &lt;773nxxnxxx&gt;)&lt;br /&gt;exten =&gt; s,n,Dial(SIP/1117&amp;amp;IAX2/192.168.1.50@myiaxy/s)&lt;br /&gt;&lt;br /&gt;[default]&lt;br /&gt;include =&gt; internal&lt;br /&gt;include =&gt; gizmo&lt;br /&gt;include =&gt; local&lt;br /&gt;include =&gt; tollfree&lt;br /&gt;include =&gt; domestic&lt;br /&gt;include =&gt; international&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;The image below shows how all these pieces fit together. The arrows point in the direction of the call, i.e., from the calling to the called party; the hollow tip of the arrow from the PSTN into my other phones indicates that bypassing GrandCentral is the exception rather than the rule.&lt;br /&gt;&lt;div id="xgnp" style="padding: 1em 0pt; text-align: center;"&gt;&lt;div id="pq8n" style="padding: 1em 0pt; text-align: left;"&gt;&lt;div id="dpqd" style="padding: 1em 0pt; text-align: center;"&gt;&lt;img id="j6u9" style="width: 564px; height: 335px;" src="http://docs.google.com/File?id=ddnb7s6g_60cr6mhpdw_b" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;Instead of plugging a particular phone into the IAXy, I simply left the existing phones plugged into the original jacks and plugged the IAXy into another free jack. In this way, the IAXy provides a phone signal to the entire apartment (it can handle the load of a few modern phones). I had already disconnected the incoming PSTN line from the apartment wiring so that it would not interfere with the ATA during the brief transitional period.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Reconnecting the door phone&lt;/h2&gt;&lt;br /&gt;I generally like to keep working hardware as long as there is a use for it, so I was wondering what to do about the &lt;a href="http://www.voip-info.org/tiki-index.php?page=X100P+clone"&gt;Digium X100P clone&lt;/a&gt; FXO card I had put into my home server a few years back. This is basically a controllerless (soft) modem card that allows the computer to make and receive phone calls. I remembered an innocuous comment a crafty neighbor of mine, Louis Hubbard, had made during an earlier discussion of the switch to VoIP. He said that the &lt;a href="http://forum.voxilla.com/linksys-sipura-voip-support-forum/spa3k-doesnt-detect-my-buildings-lobby-phone-17004.html#post87446"&gt;lobby phone&lt;/a&gt; for the doorperson to announce visitors (I live in a highrise) should still work even without PSTN service as long as I simply hook up a phone to the PSTN line coming in from outside. And he was right! So I rewired the apartment a bit and managed to connect the outside line to the X100P and configured Asterisk to receive incoming calls from the card, complete with caller ID and all. That was the dot on the i, so to speak, because other residents who switched only from an ILEC (incumbent local exchange carrier, such as the local phone company) to a CLEC (competitive local exchange carrier, such as the cable company) lost that capability, to the annoyance of building staff. You can probably use a similar setup for other types of door phones or get a (more expensive) SIP door phone.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;So how hard was it?&lt;/h2&gt;&lt;br /&gt;It was straightforward to get most pieces to work on &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt; Edgy or Hardy (yes, I made that upgrade in the process, too, but had to resolve some other lingering complications before I could go on) and configure them according to the instructions. The Zaptel driver for the X100P card included with Ubuntu, however, is buggy, and I had to perform a manual install of Digium's latest version of that driver &lt;span style="font-style: italic;"&gt;(svn checkout http://svn.digium.com/svn/zaptel/branches/1.4 zaptel)&lt;/span&gt; to get everything to work including proper initialization at boot time.&lt;br /&gt;&lt;br /&gt;In conclusion, yes, it was a bit hard, but it sure was great fun. Both George and I ended up saving big bucks amounting to 75% or more compared to our previous plans. We use our regular phones more than cell phones, especially for long calls. Call quality is better—even with VoIP—, not to mention fewer dropped packets and delays of one form or another. I would gladly do it again! Definitely beats gardening by the widest of margins.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Acknowledgments&lt;/h3&gt;&lt;br /&gt;Thanks to &lt;a href="http://www.burnpc.com/"&gt;Ron Senykoff&lt;/a&gt; for his valuable advice on this project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7540010223464953438-941715143847932355?l=laufer.cs.luc.edu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laufer.cs.luc.edu/feeds/941715143847932355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7540010223464953438&amp;postID=941715143847932355' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/941715143847932355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/941715143847932355'/><link rel='alternate' type='text/html' href='http://laufer.cs.luc.edu/2008/09/dude-youre-getting-voip-moving-past.html' title='Dude, You&apos;re Getting VoIP: Moving Past POTS'/><author><name>Konstantin</name><uri>http://www.blogger.com/profile/07858403962357318797</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01678707315460052671'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7540010223464953438.post-2222304014276423461</id><published>2009-08-03T23:02:00.012-05:00</published><updated>2009-09-17T16:16:51.831-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computing'/><title type='text'>Imported All Legacy Email into Gmail</title><content type='html'>I switched to Gmail in 2006 but still had my earlier legacy email in three different places:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Maildir format (Courier server) since about 1998 (about 2 GB)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Netscape mbox format since about 1996&lt;/li&gt;&lt;li&gt;MH format from 1987 to 1996&lt;/li&gt;&lt;/ul&gt;I am just about done with the conversion. It required a tedious semi-automated process that took several days. I basically followed these steps:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Convert MH mail to mbox using &lt;a href="http://www.geocities.com/usmbish/scripts.html#mh2mbox"&gt;this script&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Convert resulting mail and Netscape mbox mail to Maildir using the newest version of &lt;a href="http://www.firstpr.com.au/web-mail/mb2md/"&gt;this script&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Filtering out all messages already in Gmail, for each set of desired Gmail labels, import the corresponding Maildir folders using &lt;a href="http://scott.yang.id.au/2009/01/migrate-emails-maildir-gmail/"&gt;Scott Yang's excellent IMAP-based maildir2gmail.py tool&lt;/a&gt;, then apply the desired labels to the imported messages, finally add these labels to the filter. Repeat until done.&lt;/li&gt;&lt;/ol&gt;There was one minor complication: A colleague of mine used a misconfigured client that caused the year in his messages to appear as 100, 101, etc. instead of 2000, 2001, etc. maildir2gmail.py couldn't handle those messages, and I was too lazy to figure out how to fix them with sed, so I simply deleted them. I probably have most of their content quoted in my replies anyway.&lt;br /&gt;&lt;br /&gt;My recommendation is not to bother with these options:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;An email GUI client won't be able to handle anything but tiny volumes of mail reliably.&lt;/li&gt;&lt;li&gt;&lt;a href="http://marklyon.org/gmail/"&gt;Gmail Loader&lt;/a&gt; uses SMTP and seems to mess up the original message headers. Besides, it seemed very slow.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Now I have over 90,000 messages taking up almost 4 GB, a bit more than half of the current limit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7540010223464953438-2222304014276423461?l=laufer.cs.luc.edu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laufer.cs.luc.edu/feeds/2222304014276423461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7540010223464953438&amp;postID=2222304014276423461' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/2222304014276423461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/2222304014276423461'/><link rel='alternate' type='text/html' href='http://laufer.cs.luc.edu/2009/08/imported-all-legacy-email-into-gmail.html' title='Imported All Legacy Email into Gmail'/><author><name>Konstantin</name><uri>http://www.blogger.com/profile/07858403962357318797</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01678707315460052671'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7540010223464953438.post-5959075483202657320</id><published>2008-10-11T19:19:00.011-05:00</published><updated>2009-09-17T16:16:51.831-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='telephony'/><category scheme='http://www.blogger.com/atom/ns#' term='voip'/><category scheme='http://www.blogger.com/atom/ns#' term='asterisk'/><category scheme='http://www.blogger.com/atom/ns#' term='phone'/><category scheme='http://www.blogger.com/atom/ns#' term='computing'/><title type='text'>Simplified Gizmo5 Backdoor Dialing Asterisk Gateway Interface Script</title><content type='html'>Using &lt;a href="http://gizmo5.com/pc/backdoor/"&gt;Gizmo5 backdoor dialing&lt;/a&gt;, one can make free VoIP calls to a growing double-digit percentage of domestic US phones. &lt;a href="http://nerdvittles.com/index.php?p=226"&gt;This article&lt;/a&gt; shows how to integrate this mechanism into &lt;a href="http://www.freepbx.org/"&gt;FreePBX&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In an earlier article, I described a DYI VoIP setup that uses plain Asterisk for routing calls among various VoIP providers, analog phone adapters (ATAs), and the building door phone. Since I wrote that article, I have moved this Asterisk installation to a &lt;a href="http://www.nslu2-linux.org/"&gt;Linksys NSLU2 ("slug")&lt;/a&gt; and want to keep it as minimal as possible.&lt;br /&gt;&lt;br /&gt;Starting with an updated version of the Monetra callerID lookup script, which performs some very basic screen scraping to look up callerID information from several web sites, I wrote a similar script that checks whether a given phone number can be called for free using Gizmo5 backdoor dialing and caches the result. Gizmo5 has a very simple web service for this purpose that powers its lookup form.&lt;br /&gt;&lt;br /&gt;The script can be used in extensions.conf as follows, assuming your Gizmo5 account is set up correctly in sip.conf.&lt;br /&gt;&lt;pre&gt;[macro-gizmo5backdoor]&lt;br /&gt;exten =&gt; s,1,AGI(gizmo5backdoor_shell.agi|${MACRO_EXTEN})&lt;br /&gt;exten =&gt; s,n,GotoIf($[ "${foundroute}" = "yes" ]?backdoor:pstn)&lt;br /&gt;exten =&gt; s,n(backdoor),Goto(backdoor,010${MACRO_EXTEN},1)&lt;br /&gt;exten =&gt; s,n(pstn),Dial(SIP/other-provider/${MACRO_EXTEN})&lt;br /&gt;&lt;br /&gt;[domestic]&lt;br /&gt;exten =&gt; _1NXXNXXXXXX,1,Macro(gizmo5backdoor,${EXTEN})&lt;br /&gt;&lt;br /&gt;[backdoor]&lt;br /&gt;exten =&gt; _0101NXXNXXXXXX,1,Dial(SIP/gizmo5/${EXTEN})&lt;br /&gt;&lt;/pre&gt;Both scripts are available from the &lt;a href="http://code.google.com/p/asterizmo"&gt;Asterizmo project site&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7540010223464953438-5959075483202657320?l=laufer.cs.luc.edu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laufer.cs.luc.edu/feeds/5959075483202657320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7540010223464953438&amp;postID=5959075483202657320' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/5959075483202657320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/5959075483202657320'/><link rel='alternate' type='text/html' href='http://laufer.cs.luc.edu/2008/10/simplified-gizmo5-backdoor-dialing.html' title='Simplified Gizmo5 Backdoor Dialing Asterisk Gateway Interface Script'/><author><name>Konstantin</name><uri>http://www.blogger.com/profile/07858403962357318797</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01678707315460052671'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7540010223464953438.post-5913383503858893480</id><published>2008-12-10T22:33:00.013-06:00</published><updated>2009-08-17T20:52:57.431-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='computing'/><title type='text'>Solved: weird problem with special characters in filenames</title><content type='html'>After moving my iTunes library from my Mac to a directory on an Ubuntu Linux server mounted via CIFS, iTunes could no longer find a good number of songs. All of the problematic songs had special characters such as accents in their filenames.&lt;br /&gt;&lt;br /&gt;After trying a few different things over the course of several weeks, I finally noticed that the problematic names had the plain characters followed by so-called combining accents.&lt;br /&gt;&lt;br /&gt;For example, instead of  instead of a &lt;a href="http://www.fileformat.info/info/unicode/char/00d1/"&gt;simple Ñ&lt;/a&gt; they had an N followed by a &lt;a href="http://www.fileformat.info/info/unicode/char/0303/"&gt;&lt;span style="text-decoration: underline;"&gt;combining tilde&lt;/span&gt;&lt;/a&gt;. CIFS clients, including OS X Finder and smbclient could not handle these combined versions, and the files were inaccessible.&lt;br /&gt;&lt;br /&gt;Fortunately, the &lt;a href="http://freshmeat.net/projects/convmv/"&gt;convmv&lt;/a&gt; utility can fix this problem in bulk for a whole directory tree:&lt;br /&gt;&lt;br /&gt;convmv -r -f utf8 -t utf8 --nfc .&lt;br /&gt;&lt;br /&gt;It appears that the key was to convert the filenames into &lt;a href="http://unicode.org/reports/tr15/"&gt;NFC Unicode normalization form&lt;/a&gt; (--nfc argument), typically used on Linux. It does not seem to work with NFD, typically used on Mac OS.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update on Monday, August 17, 2009, 20:36&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This problem just came back to haunt me when trying to synchronize the recently modified version of the iTunes library on OS X (NFD encoding) with the one on the Linux server (NFC encoding) using the &lt;a href="http://www.seas.upenn.edu/%7Ebcpierce/unison"&gt;Unison file synchronizer&lt;/a&gt; via ssh &lt;span&gt;(&lt;/span&gt;&lt;span style="font-style: italic;"&gt;not via CIFS&lt;/span&gt;&lt;span&gt;, for better reliability)&lt;/span&gt;. It turns out that the released and beta versions of Unison do not yet solve this problem. After I found &lt;a href="http://lists.seas.upenn.edu/pipermail/unison-hackers/2009-July/001093.html"&gt;this discussion&lt;/a&gt;, I downloaded and built the most recent revision from the repository and am running it with the &lt;span style="font-style: italic;"&gt;unicode=true&lt;/span&gt; option, which makes it handle this situation correctly. The non-GUI version built out of the box without problems on OS X and Ubuntu with the most recent OCaml. That's one more loose end tied up...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7540010223464953438-5913383503858893480?l=laufer.cs.luc.edu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laufer.cs.luc.edu/feeds/5913383503858893480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7540010223464953438&amp;postID=5913383503858893480' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/5913383503858893480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/5913383503858893480'/><link rel='alternate' type='text/html' href='http://laufer.cs.luc.edu/2008/12/solved-weird-problem-with-special.html' title='Solved: weird problem with special characters in filenames'/><author><name>Konstantin</name><uri>http://www.blogger.com/profile/07858403962357318797</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01678707315460052671'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7540010223464953438.post-1384789679004514677</id><published>2009-01-16T18:46:00.015-06:00</published><updated>2009-08-14T22:29:35.274-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='telephony'/><category scheme='http://www.blogger.com/atom/ns#' term='asterisk'/><category scheme='http://www.blogger.com/atom/ns#' term='phone'/><category scheme='http://www.blogger.com/atom/ns#' term='computing'/><title type='text'>Excellent Linksys/Sipura SPA-3102 Experience</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt;&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/ZZq-h9BPEMjUMimeke6Ghw?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_8akOtgiA2CE/SoBVJp0FpqI/AAAAAAAAAvI/wLA52_m6CP8/s144/Networking%20Corner.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;&lt;a href="http://picasaweb.google.com/klaeufer/TechnicalToys2009?feat=embedwebsite"&gt;Networking Corner&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;As a result of my migration from a noisy, overheating mid-tower server to a near-silent Mac mini Core Duo with a DAT Optic 4-bay FireWire enclosure, I could no longer use the &lt;a href="http://www.voip-info.org/tiki-index.php?page=X100P+clone"&gt;Digium X100P clone&lt;/a&gt; FXO internal PCI card. Therefore, I needed an external device with an FXO port to which to connect the incoming phone line from the building lobby (please see &lt;a href="http://laufer.cs.luc.edu/2008/09/dude-youre-getting-voip-moving-past.html"&gt;this earlier article&lt;/a&gt; for more context).&lt;br /&gt;&lt;br /&gt;I was also hoping to replace or at least complement the &lt;a href="http://www.digium.com/en/products/analog/s101i.php"&gt;Digium S101i IAXy&lt;/a&gt; analog telephone adapter (ATA), which is not reliable enough for everyday residential use because it frequently goes into an inconsistent state and gives a busy signal instead of a dial tone.&lt;br /&gt;&lt;br /&gt;Fortunately, the &lt;a href="http://www.cisco.com/en/US/products/ps10027/"&gt;Linksys/Sipura SPA-3102&lt;/a&gt; is exactly what I needed. It is a SIP-based ATA with both an FXS port, which provides a dial tone to my existing apartment phones, and an FXO port, which receives calls from the building lobby. Surprisingly, at about $75, it is cheaper than the IAXy. As long as you don't need support for the IAX protocol, you're probably much better off with this rock-solid device. It also has a web interface and supports numerous features that I am actually using, such as distinctive ring.&lt;br /&gt;&lt;br /&gt;I connected mine to my existing Asterisk server following some of &lt;a href="http://delicious.com/klaufer/asterisk+hardware"&gt;these instructions&lt;/a&gt; and the device's manual. I configured the following dial plan for the PSTN line to transfer incoming calls immediately to the given extension:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;S0&lt;:sipura-fxo-incoming&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In Asterisk, I can then receive calls on this extension like so,&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[sipura-fxo]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  exten =&gt; sipura-fxo-incoming,1,Goto(intercom,s,1)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;using the context I specified in the ATA's SIP registration shown here. (The authentication settings in the ATA configuration has to be consistent with Asterisk's SIP configuration.)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[sipura-fxo]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; context=sipura-fxo&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; type=friend&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; host=dynamic&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; username=sipura-fxo&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; secret=******&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;disallow=all&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; allow=ulaw&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; canreinvite=no&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; qualify=yes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; insecure=port,invite&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; nat=no&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[sipura-fxs]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  context=sipura-fxs&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  type=friend&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  host=dynamic&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  username=sipura-fxs&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  secret=******&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;disallow=all&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  allow=ulaw&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  canreinvite=no&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  qualify=yes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  insecure=port,invite&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  nat=no&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7540010223464953438-1384789679004514677?l=laufer.cs.luc.edu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laufer.cs.luc.edu/feeds/1384789679004514677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7540010223464953438&amp;postID=1384789679004514677' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/1384789679004514677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/1384789679004514677'/><link rel='alternate' type='text/html' href='http://laufer.cs.luc.edu/2009/01/linksyssipura-spa-3102.html' title='Excellent Linksys/Sipura SPA-3102 Experience'/><author><name>Konstantin</name><uri>http://www.blogger.com/profile/07858403962357318797</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01678707315460052671'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_8akOtgiA2CE/SoBVJp0FpqI/AAAAAAAAAvI/wLA52_m6CP8/s72-c/Networking%20Corner.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7540010223464953438.post-4961409982544888307</id><published>2009-01-26T14:50:00.012-06:00</published><updated>2009-04-28T23:53:03.873-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='consumer'/><category scheme='http://www.blogger.com/atom/ns#' term='food'/><title type='text'>Whole Foods: Mixed Experience</title><content type='html'>I vaguely recall having been to Whole Foods once many years ago. Today I went back only to stock up on organic quinua for a decent $3/lbs in bulk, better than Trader Joe's $4 for a box with less than one lbs, if it's even in stock.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But I also noticed various items that were significantly (up to 50%) more than the exact same items at TJ.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Driscoll organic raspberries, WF $5.99, TJ $3.99&lt;/li&gt;&lt;li&gt;Laughing Cow Babybel cheese, WF $4.99, TJ $3.29&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;WTF? I'm not planning to go back until I run out of quinua...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7540010223464953438-4961409982544888307?l=laufer.cs.luc.edu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laufer.cs.luc.edu/feeds/4961409982544888307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7540010223464953438&amp;postID=4961409982544888307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/4961409982544888307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/4961409982544888307'/><link rel='alternate' type='text/html' href='http://laufer.cs.luc.edu/2009/01/whole-foods-mixed-experience.html' title='Whole Foods: Mixed Experience'/><author><name>Konstantin</name><uri>http://www.blogger.com/profile/07858403962357318797</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01678707315460052671'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7540010223464953438.post-6018258613121751349</id><published>2008-08-20T10:57:00.008-05:00</published><updated>2009-01-26T14:48:50.784-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='propane'/><category scheme='http://www.blogger.com/atom/ns#' term='consumer'/><category scheme='http://www.blogger.com/atom/ns#' term='energy'/><title type='text'>Propane Exchange Pricing in the Chicago Area</title><content type='html'>Last night, I went to Home Depot in Evanston for a quick propane exchange. Out of curiosity, I called a few other places this morning to get their prices. Here is a summary (all prices in US$, not including about 10% sales tax):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Clark Devon Hardware:&lt;/li&gt;&lt;li&gt;CVS:&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Home Depot:&lt;/li&gt;&lt;li&gt;Lowe's:&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Menards: &lt;span style="color: rgb(255, 102, 0);"&gt;17.82&lt;/span&gt;&lt;/li&gt;&lt;li&gt;7-11:&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;I think it would be cool if &lt;a href="http://www.chicagogasprices.com/"&gt;Chicago Gas Prices&lt;/a&gt; included propane exchange...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7540010223464953438-6018258613121751349?l=laufer.cs.luc.edu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laufer.cs.luc.edu/feeds/6018258613121751349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7540010223464953438&amp;postID=6018258613121751349' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/6018258613121751349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/6018258613121751349'/><link rel='alternate' type='text/html' href='http://laufer.cs.luc.edu/2008/08/propane-exchange-pricing-in-chicago.html' title='Propane Exchange Pricing in the Chicago Area'/><author><name>Konstantin</name><uri>http://www.blogger.com/profile/07858403962357318797</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01678707315460052671'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7540010223464953438.post-663534974997057824</id><published>2008-08-20T13:12:00.004-05:00</published><updated>2008-10-23T20:01:28.189-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sports'/><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='consumer'/><title type='text'>Gift Ideas for Friends in Europe</title><content type='html'>If you live in the US or Canada and have friends or family abroad who lead an active lifestyle, you may consider taking some of these items as gifts (conveniently available at the nearby Target):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Gatorade powder&lt;/li&gt;&lt;li&gt;CLIF bars (for example, in Germany, you can get only the much less tasty Power Bars for an even less tasty price)&lt;/li&gt;&lt;li&gt;sweatproof sunblock (they only have the waterproof kind)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7540010223464953438-663534974997057824?l=laufer.cs.luc.edu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laufer.cs.luc.edu/feeds/663534974997057824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7540010223464953438&amp;postID=663534974997057824' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/663534974997057824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/663534974997057824'/><link rel='alternate' type='text/html' href='http://laufer.cs.luc.edu/2008/08/gift-ideas-for-friends-in-europe.html' title='Gift Ideas for Friends in Europe'/><author><name>Konstantin</name><uri>http://www.blogger.com/profile/07858403962357318797</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01678707315460052671'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7540010223464953438.post-7577882879550953626</id><published>2008-09-25T03:05:00.028-05:00</published><updated>2008-10-11T02:17:56.270-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='telephony'/><category scheme='http://www.blogger.com/atom/ns#' term='phone'/><category scheme='http://www.blogger.com/atom/ns#' term='consumer'/><category scheme='http://www.blogger.com/atom/ns#' term='computing'/><title type='text'>Exporting Contacts from Plaxo to Nokia 6100</title><content type='html'>Instead of using up my equipment credit from T-Mobile for signing a new contract, I am using a Nokia 6100 my friend from Germany had given to me. This is a nice and small mid-range phone.&lt;br /&gt;&lt;br /&gt;The challenge was to prepopulate the new phone with a selection and projection of my contacts stored on Plaxo. I was not even looking for bidirectional synchronization because I don't mind making incremental changes on both Plaxo and the phone, as long as I have the ability to back up the phone data reliably.&lt;br /&gt;&lt;br /&gt;Based on information available on the Nokia support site, I ordered an original Nokia CA-42 true USB cable (among other accessories) for US$22 instead of a cheap DKU-5 clone that merely &lt;a href="http://www.howardforums.com/showthread.php?threadid=617520"&gt;emulates a serial connection over USB&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The situation:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;This phone is not supported by Apple iSync.&lt;/li&gt;&lt;li&gt;It is supported by the Nokia PC Suite. Because I don't run Windows natively on any machine (not a safe practice in my opinion), I installed the Nokia PC Suite on a VirtualBox VM running Windows XP. On a Mac host, I couldn't connect because the Mac grabs the USB device so Windows thinks its already in use. On a Linux host (I use Ubuntu Hardy 8.04), I could connect the phone just fine, but the phone book component of the suite kept crashing miserably and repeatedly and I decided to abandon this route.&lt;/li&gt;&lt;li&gt;It is also supported by a shareware program for the Mac called &lt;a href="http://www.lucanasoft.com/en/megacell/megacell.html"&gt;MegaCellX&lt;/a&gt;. Although this is a nice program that supports a number of phone models and integrates with Address Book, on certain Nokia phones it does not support multi-number contacts, so you get multiple entries on the phone for people with more than one number.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;I eventually got the job done this morning around 3 as follows:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Plaxo itself does not support selective export, but Address Book does (synchronized via &lt;a href="http://www.plaxo.com/downloads/mac"&gt;Plaxo for Mac&lt;/a&gt;, and Plaxo's user-defined categories show up very nicely as groups in Address Book. I exported a selection of about 150 contacts in the (text-based) vCard 2.1 format.&lt;/li&gt;&lt;li&gt;Using a combination of grep and Emacs, I manually fixed the following kinks that cause problems with the next step:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;illegal characters in phone numbers (anything other than digits, *, +, or p) (everything up to this point does get imported, but you need to switch to SIM contacts and back to memory contacts to refresh the view)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;use of FN: instead of the expected N:&lt;/li&gt;&lt;li&gt;strings in non-quoted-printable UTF-8 (I cannot believe this is &lt;span style="font-style: italic;"&gt;still&lt;/span&gt; broken in Address Book) show up as empty fields but don't disrupt the import&lt;br /&gt;&lt;/li&gt;&lt;li&gt;unnecessary fields (this is the projection part)&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Using &lt;a href="http://wammu.eu/"&gt;Wammu&lt;/a&gt; on my Linux box, I transfered these contacts to my phone! I had to cycle a few times between the preceding step and this one until all contacts got imported cleanly. I still had to do some editing in Wammu to add special characters in names etc.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;For some multi-number contacts, I changed the default number on the phone.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7540010223464953438-7577882879550953626?l=laufer.cs.luc.edu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laufer.cs.luc.edu/feeds/7577882879550953626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7540010223464953438&amp;postID=7577882879550953626' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/7577882879550953626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/7577882879550953626'/><link rel='alternate' type='text/html' href='http://laufer.cs.luc.edu/2008/09/exporting-contacts-from-plaxo-to-nokia.html' title='Exporting Contacts from Plaxo to Nokia 6100'/><author><name>Konstantin</name><uri>http://www.blogger.com/profile/07858403962357318797</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01678707315460052671'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7540010223464953438.post-3098987625982356802</id><published>2008-09-25T02:00:00.010-05:00</published><updated>2008-09-25T18:21:32.919-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='telephony'/><category scheme='http://www.blogger.com/atom/ns#' term='phone'/><category scheme='http://www.blogger.com/atom/ns#' term='consumer'/><title type='text'>Finally Switching from Verizon Wireless to T-Mobile</title><content type='html'>I finally threw off the shackles of Verizon Wireless last Wednesday. I chose T-Mobile instead for the following reasons:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I sometimes travel internationally and am much better off with a pure &lt;a href="http://www.gsmworld.com/roaming/gsminfo/"&gt;GSM&lt;/a&gt; provider.&lt;/li&gt;&lt;li&gt;Verizon is very slow to establish agreements with &lt;a href="http://www.cdg.org/worldwide/"&gt;countries that do have CDMA networks&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;There are countries where dual-mode phones from Verizon will not work at all. This is generally the case for GSM countries with American frequencies (850/1900 MHz) such as Bolivia and Paraguay.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;T-Mobile doesn't lock down its devices the way Verizon does. I can install my own apps much more easily.&lt;/li&gt;&lt;/ul&gt;It also turns out that myFaves is a real winner. If you have a provider with a non-800 access number, you get close to unlimited outbound calling.&lt;br /&gt;&lt;br /&gt;See also:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.howardforums.com/forumdisplay.php?f=52"&gt;HowardForums T-Mobile forum&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.howardforums.com/index.php/T-Mobile"&gt;HowardForums T-Mobile wiki&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.intomobile.com/2007/05/09/get-free-incoming-calls-on-t-mobile.html"&gt;Free incoming calls on T-Mobile&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7540010223464953438-3098987625982356802?l=laufer.cs.luc.edu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laufer.cs.luc.edu/feeds/3098987625982356802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7540010223464953438&amp;postID=3098987625982356802' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/3098987625982356802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/3098987625982356802'/><link rel='alternate' type='text/html' href='http://laufer.cs.luc.edu/2008/09/finally-switching-from-verizon-wireless.html' title='Finally Switching from Verizon Wireless to T-Mobile'/><author><name>Konstantin</name><uri>http://www.blogger.com/profile/07858403962357318797</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01678707315460052671'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7540010223464953438.post-8740417603061757187</id><published>2008-08-24T22:22:00.005-05:00</published><updated>2008-08-24T22:35:43.145-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computing'/><title type='text'>Converting MPEG-4 (h.264) Videos for Viewing with mvpmc</title><content type='html'>&lt;a href="http://www.mvpmc.org/"&gt;mvpmc&lt;/a&gt; is a media player running on the Hauppauge MediaMVP. Besides serving as a &lt;a href="http://www.mythtv.org/"&gt;MythTV&lt;/a&gt; front end, it allows me to access multimedia content stored on a file server and show it on a conventional TV set.&lt;br /&gt;&lt;br /&gt;Increasingly, TV content is archived in MPEG-4 format (&lt;a href="http://www.tagesschau.de/"&gt;example&lt;/a&gt;). Using &lt;a href="http://www.ffmpeg.org/"&gt;ffmpeg&lt;/a&gt;, it can be converted to a DVD-like format suitable for viewing with mvmpc as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ffmpeg  -i xyz.mp4 -target ntsc-dvd -s 320x240 -acodec mp2 -ab 160k  xyz.vob&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately, this conversion causes the file size to increase six-fold. Any suggestions to minimize the file size without introducing playback problems are welcome.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7540010223464953438-8740417603061757187?l=laufer.cs.luc.edu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laufer.cs.luc.edu/feeds/8740417603061757187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7540010223464953438&amp;postID=8740417603061757187' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/8740417603061757187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/8740417603061757187'/><link rel='alternate' type='text/html' href='http://laufer.cs.luc.edu/2008/08/converting-mpeg-4-h264-videos-for.html' title='Converting MPEG-4 (h.264) Videos for Viewing with mvpmc'/><author><name>Konstantin</name><uri>http://www.blogger.com/profile/07858403962357318797</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01678707315460052671'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7540010223464953438.post-2696379529496278178</id><published>2007-04-01T10:22:00.000-05:00</published><updated>2007-04-01T10:53:58.985-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='osx'/><category scheme='http://www.blogger.com/atom/ns#' term='emulation'/><category scheme='http://www.blogger.com/atom/ns#' term='computing'/><title type='text'>Free Windows emulator for Intel-based Mac</title><content type='html'>Now why would I want such a thing given that there already is Boot Camp? Very simple: I might be using OS X as my primary environment but occasionally have to try out things using specific Windows software. For example, I might want to check whether the XHTML and JavaScript code in the presentation tier of a web application work in Internet Explorer without shutting down and rebooting back-and-forth between OS X and Windows all the time.&lt;br /&gt;&lt;br /&gt;So how do I do this for free (the emulation part, that is, because Windows itself is not free)? Even our MSDN Academic Alliance site license doesn't help in this case because Virtual PC does not work on Intel-based Macs. Luckily, I stumbled across &lt;a href="http://www.thefreecountry.com/emulators/pc.shtml"&gt;this list of emulators&lt;/a&gt;, which includes a reference to &lt;a href="http://www.kju-app.org/kju/"&gt;Q&lt;/a&gt;, a Cocoa port of the open-source emulator &lt;a href="http://www.qemu.org/"&gt;QEMU&lt;/a&gt;. Q supports multiple guest PCs and takes advantage of OS X's advanced technical capabilities.&lt;br /&gt;&lt;br /&gt;Even though Q is still in alpha status, it is well-documented and includes a &lt;a href="http://www.kju-app.org/proj/wiki/WindowsXPServicePackTwo"&gt;detailed tutorial for installing Windows XP SP2&lt;/a&gt;. I had no trouble performing this installation and running IE. Keyboard focus can be a bit quirky: it seems to think that a modifier key is stuck. If this problem doesn't go away by minimizing and restoring IE, it sending Ctrl-Alt-Del to the guest PC and invoking the task manager's "run command" menu item without actually running anything seems to take care of it.&lt;br /&gt;&lt;br /&gt;In summary, Q gets this particular job done for me, and I think it is emerging as a serious competitor to the commercial emulators.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7540010223464953438-2696379529496278178?l=laufer.cs.luc.edu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laufer.cs.luc.edu/feeds/2696379529496278178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7540010223464953438&amp;postID=2696379529496278178' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/2696379529496278178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/2696379529496278178'/><link rel='alternate' type='text/html' href='http://laufer.cs.luc.edu/2007/04/free-windows-emulator-for-intel-based.html' title='Free Windows emulator for Intel-based Mac'/><author><name>Konstantin</name><uri>http://www.blogger.com/profile/07858403962357318797</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01678707315460052671'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7540010223464953438.post-7139555109416406435</id><published>2007-01-28T00:18:00.003-06:00</published><updated>2007-04-01T10:51:40.143-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dining'/><category scheme='http://www.blogger.com/atom/ns#' term='argentina'/><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><title type='text'>Restaurants in Buenos Aires</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt; &lt;a href="http://www.flickr.com/photos/klaufer/363887673/" title="photo sharing"&gt;&lt;img src="http://farm1.static.flickr.com/115/363887673_2873bd1d33_m.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;a href="http://www.flickr.com/photos/klaufer/363887673/"&gt;By now El Obrero in La Boca has gotten packed&lt;/a&gt;&lt;/span&gt;&lt;span style="margin-top: 0px;font-size:0;" &gt;Originally uploaded by &lt;a href="http://www.flickr.com/people/klaufer/"&gt;laufer&lt;/a&gt;. &lt;/span&gt;&lt;/div&gt;&lt;a href="http://www.guiaoleo.com.ar/"&gt;Guía Oleo&lt;/a&gt; is a very useful guide to restaurants in Buenos Aires based on user-submitted ratings. The guide ranks restaurants in several categories and has a powerful search function.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7540010223464953438-7139555109416406435?l=laufer.cs.luc.edu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laufer.cs.luc.edu/feeds/7139555109416406435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7540010223464953438&amp;postID=7139555109416406435' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/7139555109416406435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/7139555109416406435'/><link rel='alternate' type='text/html' href='http://laufer.cs.luc.edu/2007/01/dsc00299jpg_27.html' title='Restaurants in Buenos Aires'/><author><name>Konstantin</name><uri>http://www.blogger.com/profile/07858403962357318797</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01678707315460052671'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7540010223464953438.post-5981763533133783288</id><published>2007-01-21T21:52:00.001-06:00</published><updated>2007-04-01T10:50:34.990-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='money'/><title type='text'>Foreign exchange in Argentina and Chile</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt; &lt;a href="http://www.flickr.com/photos/klaufer/363892993/" title="photo sharing"&gt;&lt;img src="http://farm1.static.flickr.com/159/363892993_89b0d522fe_m.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;a href="http://www.flickr.com/photos/klaufer/363892993/"&gt;Street corner in Purmamarca, Jujuy Province,&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/klaufer/363892993/"&gt;NW Argentina&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="margin-top: 0px;font-size:0;" &gt; Originally uploaded by &lt;a href="http://www.flickr.com/people/klaufer/"&gt;laufer&lt;/a&gt;. &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;Cash can be king: the cash market is so efficient that the buy-sell spread is minimal. For example, in Salta in Argentina's Northwest, street vendors would buy one USD at ARS 3.05 and sell one USD at ARS 3.09, amounting to only a 1.3% spread.  In Arica, Chile, the spread on the street was slightly larger, buy at CLP 535 and sell at 547, amounting to 2.2%.&lt;br /&gt;&lt;br /&gt;By contrast, the effective exchange rate for withdrawing ARS 1500 using an ATM card comes out to 2.96. How did that happen? Well, the base rate for transfers was good, ARS 3.0595 per USD. Add to that a 3% charge for foreign exchange transactions plus a non-network ATM withdrawal fee of USD 3, and instead of USD 492, your ARS 1500 end up costing you USD 509. I guess the way to look at it is that you are paying almost 4% for the convenience and security of not carrying thousands of dollars in cash.&lt;br /&gt;&lt;br /&gt;Credit cards can be much kinder. The effective exchange rate for purchases with Citibank Dividend Mastercard came out to CLP 527 and with American Express to 531, only 1.5% or 0.75% on top of the street rate, respectively. In comparison, the effective exchange rate for ATM withdrawals was 513 CLP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7540010223464953438-5981763533133783288?l=laufer.cs.luc.edu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laufer.cs.luc.edu/feeds/5981763533133783288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7540010223464953438&amp;postID=5981763533133783288' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/5981763533133783288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/5981763533133783288'/><link rel='alternate' type='text/html' href='http://laufer.cs.luc.edu/2007/01/trip-to-argentina-and-chile-20067.html' title='Foreign exchange in Argentina and Chile'/><author><name>Konstantin</name><uri>http://www.blogger.com/profile/07858403962357318797</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01678707315460052671'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7540010223464953438.post-7950203787731414797</id><published>2007-03-16T12:55:00.000-05:00</published><updated>2007-04-01T10:50:09.441-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='osx'/><category scheme='http://www.blogger.com/atom/ns#' term='emulation'/><category scheme='http://www.blogger.com/atom/ns#' term='computing'/><title type='text'>Intel-based Mac: the perfect machine</title><content type='html'>I am happy to report that my Windows XP SP2 installation with Boot Camp was uneventful. I am using a 32GB FAT partition for easy file sharing between the two operating systems. Overall, the machine feels like a fast native Windows box, as it should. Now I can return the departmental Uninspiron loaner without having touched it.&lt;br /&gt;&lt;br /&gt;I performed this Windows installation specifically to use the VIA3 secure collaboration tool, which requires Windows 2000 or XP.&lt;br /&gt;&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.viack.com/product/specs/requirements.asp" target="_blank"&gt;http://www.viack.com/product&lt;wbr&gt;/specs/requirements.asp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The tool worked without problems using ordinary headphones, the built-in microphone (there is no external mic jack), and a Logitech QuickCam for Notebooks (USB).&lt;br /&gt;&lt;br /&gt;However, the tool did not work with the built-in iSight camera.&lt;br /&gt;&lt;br /&gt;In addition, the ability to run Windows will come in very handy for&lt;br /&gt;&lt;ul&gt;&lt;li&gt;mobile application development&lt;/li&gt;&lt;li&gt;web service development using Microsoft's free tools&lt;/li&gt;&lt;/ul&gt;Thanks to &lt;a href="http://www.cs.luc.edu/"&gt;Loyola's Department of Computer Science&lt;/a&gt; for providing me with such a great machine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7540010223464953438-7950203787731414797?l=laufer.cs.luc.edu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laufer.cs.luc.edu/feeds/7950203787731414797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7540010223464953438&amp;postID=7950203787731414797' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/7950203787731414797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7540010223464953438/posts/default/7950203787731414797'/><link rel='alternate' type='text/html' href='http://laufer.cs.luc.edu/2007/03/intel-based-mac-perfect-machine.html' title='Intel-based Mac: the perfect machine'/><author><name>Konstantin</name><uri>http://www.blogger.com/profile/07858403962357318797</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01678707315460052671'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry></feed>