<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>BP&apos;s Weblog</title>
    <link rel="alternate" type="text/html" href="http://geekdom.net/blog/" />
    <link rel="self" type="application/atom+xml" href="http://geekdom.net/blog/atom.xml" />
   <id>tag:geekdom.net,2008:/blog//1</id>
    <link rel="service.post" type="application/atom+xml" href="http://geekdom.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1" title="BP&#39;s Weblog" />
    <updated>2008-05-08T22:48:17Z</updated>
    <subtitle>Personal musing, technology discussion, and responses to the thinking of others.</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 3.2</generator>
 
<entry>
    <title>Great security!</title>
    <link rel="alternate" type="text/html" href="http://geekdom.net/blog/archives/2008/05/08/great_security.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://geekdom.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=487" title="Great security!" />
    <id>tag:geekdom.net,2008:/blog//1.487</id>
    
    <published>2008-05-08T22:50:20Z</published>
    <updated>2008-05-08T22:48:17Z</updated>
    
    <summary>From the manual for the Best Buy store brand of the DTV-&gt;Analog convertor box: Fwew. Good thing I don&apos;t have to remember my password anymore.... Technorati Tags: badsecurity...</summary>
    <author>
        <name>Bryan</name>
        <uri>http://geekdom.net/blog/</uri>
    </author>
            <category term="Editorial" />
    
    <content type="html" xml:lang="en" xml:base="http://geekdom.net/blog/">
        <![CDATA[<p>From the manual for the Best Buy store brand of the DTV->Analog convertor box:</p>

<p><img src="http://s3.amazonaws.com/geekdom-bp-appengine/upload/9bD1725ad3/03302008227-markedup.jpg" alt="bad security" title="" /></p>

<p>Fwew. Good thing I don't have to remember my password anymore....
<!-- technorati tags start --><p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/badsecurity" rel="tag">badsecurity</a></p><!-- technorati tags end --></p>
]]>
        

    </content>
</entry>
<entry>
    <title>First Google AppEngine app....</title>
    <link rel="alternate" type="text/html" href="http://geekdom.net/blog/archives/2008/04/13/first_google_appengine_app.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://geekdom.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=479" title="First Google AppEngine app...." />
    <id>tag:geekdom.net,2008:/blog//1.479</id>
    
    <published>2008-04-13T14:27:19Z</published>
    <updated>2008-04-13T14:26:31Z</updated>
    
    <summary>Or, in other words, I can&apos;t help but play with every new Web 2.0 tool that comes out, and because &quot;signing up for an account&quot; doesn&apos;t tell you as much about a development environment as you might hope... I built...</summary>
    <author>
        <name>Bryan</name>
        <uri>http://geekdom.net/blog/</uri>
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://geekdom.net/blog/">
        <![CDATA[<p>Or, in other words, I can't help but play with every new Web 2.0 tool that comes out, and because "signing up for an account" doesn't tell you as much about a development environment as you might hope...</p>

<p>I built a little GAppEngine tool that facilitates uploads to my Amazon S3 account, and then provides a list of the items. It's crufty, but, since I don't do much Python development, I'm proud it's working.</p>

<p>If anyone wants the S3 code, I'll be happy to post it later. Basically, my app will build an S3 Post form for anyone who's on the "admin" list of the application whenever they wander buy. The file gets uploaded directly to my S3 account, which, on success, redirects back to my AppEngine site to record the file upload. Non-logged in users just see a list of uploaded files.</p>

<p>Now that I've used the tool some, a few comments:</p>

<ol>
<li><p>The toolkit is actually pretty easy to get started in, if you've done any actual under-the-covers web development. Getting used to the BigTable way of doing data storage is another thing, though.</p></li>
<li><p>Even though they currently limit developers to 3 launched apps, it looks like you <em>could</em> have pretty much unlimited apps, if you don't mind unfriendly URLs for your users. Major versions of your code live at the same time - just change the "version" in your app.yaml. The value doesn't have to be numeric - and the value shows up in the URL of the app: {version}.{minornumber}.appname.appspot.com.</p></li>
<li><p>Deployment is fast, provisioning is non-existant. I hope they announce pricing soon - unless there's a hefy cost per project, I'm likely to use AppEngine for any personal project I write from here on out. Maintaining personal project installations is a drag.</p></li>
</ol>

<p>Anyone who wants to poke at the AppEngine-backed front page can surf to <a href="http://upload.geekdom.net/">http://upload.geekdom.net/</a>. If you know me, I'll be happy to add you to the admins list so you can try out uploading on my dime, too.</p>
]]>
        

    </content>
</entry>
<entry>
    <title>Scalable static hosting, with stats!</title>
    <link rel="alternate" type="text/html" href="http://geekdom.net/blog/archives/2008/03/27/scalable_static_hosting_with_stats.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://geekdom.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=477" title="Scalable static hosting, with stats!" />
    <id>tag:geekdom.net,2008:/blog//1.477</id>
    
    <published>2008-03-27T17:36:57Z</published>
    <updated>2008-03-27T17:37:08Z</updated>
    
    <summary>Many of you will know that I&apos;ve been advocating S3 for static hosting of images and whatnot for personal use since, well, at least last year. S3 provides unlimited space, unlimited bandwidth, cheap, continuously scaling service. Despite that, turns out,...</summary>
    <author>
        <name>Bryan</name>
        <uri>http://geekdom.net/blog/</uri>
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://geekdom.net/blog/">
        <![CDATA[<p>Many of you will know that I've been advocating S3 for static hosting of images and whatnot for personal use since, well, at least last year. S3 provides unlimited space, unlimited bandwidth, cheap, continuously scaling service. Despite that, turns out, many people don't want to do this for two reasons:</p>

<ol>
<li>It's tricky to do</li>
<li>You lose track of how people are using your images</li>
</ol>

<p>Well, I can't promise it's trivial, though the <a href="https://addons.mozilla.org/en-US/firefox/addon/3247">S3Firefox</a> plugin is my current favorite for quickly posting files.</p>

<p>As for the second, there's now an easy solution, for a measly $2/mo. <a href="http://www.s3stat.com/">S3stat</a> generates <a href="http://www.mrunix.net/webalizer/">Webalizer</a> stats for you against your S3 log data, letting you now, easily, also keep track of your site's static S3 usage. S3stat will even let you try the service for 30 days free, so you can test out the reports before you have to pay. Or, for even less, review the service to get in on the <a href="http://www.s3stat.com/web-stats/cheap-bastard-plan.ashx">cheap bastard plan</a>.</p>
]]>
        

    </content>
</entry>
<entry>
    <title>Snow!</title>
    <link rel="alternate" type="text/html" href="http://geekdom.net/blog/archives/2007/12/04/snow.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://geekdom.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=464" title="Snow!" />
    <id>tag:geekdom.net,2007:/blog//1.464</id>
    
    <published>2007-12-04T13:42:04Z</published>
    <updated>2007-12-04T13:36:31Z</updated>
    
    <summary>Anyone remember this post? Well, welcome to this morning:...</summary>
    <author>
        <name>Bryan</name>
        <uri>http://geekdom.net/blog/</uri>
    </author>
            <category term="Personal" />
            <category term="Piaggio Typhoon" />
    
    <content type="html" xml:lang="en" xml:base="http://geekdom.net/blog/">
        <![CDATA[<p>Anyone remember <a href="http://geekdom.net/blog/archives/2007/06/">this post</a>?</p>

<p>Well, welcome to this morning:</p>

<p><a href="http://www.flickr.com/photos/bp/2085911219/" title="12042007076 by bpendleton, on Flickr"><img src="http://farm3.static.flickr.com/2062/2085911219_5a0beb51d9_m.jpg" width="240" height="180" alt="12042007076" /></a>
<a href="http://www.flickr.com/photos/bp/2085911489/" title="12042007077 by bpendleton, on Flickr"><img src="http://farm3.static.flickr.com/2231/2085911489_e3e0f2b571_m.jpg" width="240" height="180" alt="12042007077" /></a>
<a href="http://www.flickr.com/photos/bp/2085911869/" title="12042007078 by bpendleton, on Flickr"><img src="http://farm3.static.flickr.com/2007/2085911869_c2ff6434e0_m.jpg" width="240" height="180" alt="12042007078" /></a></p>
]]>
        

    </content>
</entry>
<entry>
    <title>Brokenness in Leopard iCal</title>
    <link rel="alternate" type="text/html" href="http://geekdom.net/blog/archives/2007/11/14/brokenness_in_leopard_ical.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://geekdom.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=463" title="Brokenness in Leopard iCal" />
    <id>tag:geekdom.net,2007:/blog//1.463</id>
    
    <published>2007-11-14T18:23:52Z</published>
    <updated>2007-11-14T18:24:31Z</updated>
    
    <summary>It used to be possible to re-publish calendars using iCal - merely create a new &quot;group&quot;, subscribe to some calendars, and then &quot;publish&quot; the group. It appears that the new iCal in Leopard can only publish groups from the &quot;Calendars&quot;...</summary>
    <author>
        <name>Bryan</name>
        <uri>http://geekdom.net/blog/</uri>
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://geekdom.net/blog/">
        <![CDATA[<p>It used to be possible to re-publish calendars using iCal - merely create a new "group", subscribe to some calendars, and then "publish" the group.</p>

<p>It appears that the new iCal in Leopard can only publish groups from the "Calendars" section, and subscribed calendars are in their own section. Groups in Subscribed calendars cannot be Published using the context menu nor the menubar menu. Yet, during my upgrade, some of my (subscriptions-only) calendar groups survived, and are <em>still</em> republishing. Anyone know how I can start publishing new groups of calendars in the new iCal?
<!-- technorati tags start --><p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/ical" rel="tag">ical</a>, <a href="http://www.technorati.com/tag/icalhacks" rel="tag">icalhacks</a></p><!-- technorati tags end --></p>
]]>
        

    </content>
</entry>
<entry>
    <title>DNA Files</title>
    <link rel="alternate" type="text/html" href="http://geekdom.net/blog/archives/2007/11/08/dna_files.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://geekdom.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=462" title="DNA Files" />
    <id>tag:geekdom.net,2007:/blog//1.462</id>
    
    <published>2007-11-09T01:33:27Z</published>
    <updated>2007-11-09T04:26:45Z</updated>
    
    <summary>For anyone who&apos;s been wondering what Joy&apos;s been up to for much of the last year, check out the Exploratorium&apos;s &quot;The DNA Files&quot; site. Download, print, and enjoy! (Special kudos to those who order the prescribed bioplastic cups/spoons/towels/straws/etc. from the...</summary>
    <author>
        <name>Bryan</name>
        <uri>http://geekdom.net/blog/</uri>
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://geekdom.net/blog/">
        <![CDATA[<p>For anyone who's been wondering what Joy's been up to for much of the last year, check out the Exploratorium's <a href="http://www.exploratorium.edu/dnafiles/index.html">"The DNA Files"</a> site. Download, print, and enjoy! (Special kudos to those who order the prescribed bioplastic cups/spoons/towels/straws/etc. from the recommended sources...)</p>
]]>
        

    </content>
</entry>
<entry>
    <title>A painless Windows(tm) install during a somewhat more painful windows install...</title>
    <link rel="alternate" type="text/html" href="http://geekdom.net/blog/archives/2007/10/13/a_painless_windowstm_install_during_a_somewhat_more_painful_windows_install.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://geekdom.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=458" title="A painless Windows(tm) install during a somewhat more painful windows install..." />
    <id>tag:geekdom.net,2007:/blog//1.458</id>
    
    <published>2007-10-13T21:52:06Z</published>
    <updated>2007-10-13T21:46:26Z</updated>
    
    <summary>Funny tidbit: after much delay, the promised replacement windows are being installed in our new rental. They got here at about 10:30, and are still here, making their expected average installation time pretty close to 1 window/hour. (2 men, taking...</summary>
    <author>
        <name>Bryan</name>
        <uri>http://geekdom.net/blog/</uri>
    </author>
            <category term="Personal" />
    
    <content type="html" xml:lang="en" xml:base="http://geekdom.net/blog/">
        <![CDATA[<p>Funny tidbit: after much delay, the promised replacement windows are being installed in our new rental. They got here at about 10:30, and are <em>still</em> here, making their expected average installation time pretty close to 1 window/hour. (2 men, taking no obvious breaks!)</p>

<p>Meanwhile, I needed a copy of Windows on my Mac, and I went and downloaded a trial copy of VMWare Fusion, a Windows XP 64-bit trial, <em>and</em> installed the later within the former...... in less time than it took for them to trade out one single physical window.</p>

<p><em>sigh</em> &lt;sarcasm&gt;Yes, I obviously wanted to stay home for the entire day on a Saturday.&lt;/sarcasm&gt;</p>
]]>
        

    </content>
</entry>
<entry>
    <title>How to use an old Mac laptop as a passable external display for a new one</title>
    <link rel="alternate" type="text/html" href="http://geekdom.net/blog/archives/2007/10/08/how_to_use_an_old_mac_laptop_as_a_passable_external_display_for_a_new_one.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://geekdom.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=457" title="How to use an old Mac laptop as a passable external display for a new one" />
    <id>tag:geekdom.net,2007:/blog//1.457</id>
    
    <published>2007-10-08T17:25:17Z</published>
    <updated>2007-10-08T17:21:21Z</updated>
    
    <summary>This is a quick one. The executive summary: New Mac + ScreenRecycler + IP over Firewire = Passable external display (no need to give up your main machine&apos;s precious ethernet connection) Why? Well, I&apos;ve got an old Mac laptop, which...</summary>
    <author>
        <name>Bryan</name>
        <uri>http://geekdom.net/blog/</uri>
    </author>
            <category term="Technology" />
    
    <content type="html" xml:lang="en" xml:base="http://geekdom.net/blog/">
        <![CDATA[<p>This is a quick one. The executive summary:</p>

<blockquote>
  <p>New Mac + <a href="http://www.screenrecycler.com/">ScreenRecycler</a> + IP over Firewire
   = Passable external display </p>
</blockquote>

<p>(no need to give up your main machine's precious ethernet connection)</p>

<p>Why? Well, I've got an old Mac laptop, which isn't too much use by itself (PB 1Ghz with 768mb of RAM against a Dual 2.1Ghz MacBook with 3Gb). But, it <em>is</em> an extra display. In fact, I've always thought it a shame that laptops and systems with permanent displays don't come with a video bypass, so that when the machine itself is past its useful lifetime, the display can still be used. This is a less power-efficient option to that end.</p>

<p>How? First, purchase a license to <a href="http://www.screenrecycler.com/">ScreenRecycler</a>, a tool that basically lets you use any machine you can run VNC on as an external display for a Mac (via a virtual display driver). It currently costs $25... which seems pretty decent for getting an extra display. But, because it uses the network to connect the two machines, you want that connection to be as fast as possible. While you can trivially use an Ethernet cable (Macs have, for a long time, done auto-crossover, so <em>any</em> ethernet cable will do just fine), I want to keep my Ethernet port, because Ethernet is precious where I go to school, and also more reliable.</p>

<p>How can you connect the two machines, assuming you don't have access to an appropriate ethernet switch? Firewire! If you're not using your firewire ports for anything else, just enable "Built-in Firewire" in your Network preferences pane of each Mac. In fact, if you then turn on Internet connection sharing in the Sharing preference pane (share your Built-in ethernet to your Built-in Firewire, naturally), the "screen" machine will even be able to connect to the network. I use this so that I can run Foldershare on both machines, and have a constant backup of several folders on my main machine.</p>

<p>The final step is to plug the firewire cable in between machines, install ScreenRecycler, and start up the screen sharing. I used the JollysFastVNC that ScreenRecycler includes with it, and have it set up with the name of my primary machine and the settings for auto-reconnect and fullscreen turned on... I just have to wake the extra machine up from sleep, and it returns to being the 'extra' screen as soon as it has found the network connection. I further use a tool called <a href="http://www.symonds.id.au/marcopolo/">MarcoPolo</a> to detect when I'm sitting in this configuration and launch both ScreenRecycler as well as changing the Network Location to the one where I have this network setup enabled.</p>

<p>Simple enough? No screenshots, 'cause I figure this is still a fairly advanced tutorial. If you have trouble following my steps, post a comment, and I'll beef things up. </p>

<!-- technorati tags start --><p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/machacks" rel="tag">machacks</a>, <a href="http://www.technorati.com/tag/reuse" rel="tag">reuse</a></p><!-- technorati tags end -->
]]>
        

    </content>
</entry>
<entry>
    <title>More bad security: Dumb security questions</title>
    <link rel="alternate" type="text/html" href="http://geekdom.net/blog/archives/2007/08/31/more_bad_security_dumb_security_questions.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://geekdom.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=456" title="More bad security: Dumb security questions" />
    <id>tag:geekdom.net,2007:/blog//1.456</id>
    
    <published>2007-08-31T18:37:50Z</published>
    <updated>2007-08-31T18:35:24Z</updated>
    
    <summary>I recently created a new account for company whose service is a hybrid of web-era scalability and accessibility combined with metered, nearly-instant access to a physical product... in other words, a site which it&apos;s important that my account not be...</summary>
    <author>
        <name>Bryan</name>
        <uri>http://geekdom.net/blog/</uri>
    </author>
            <category term="Editorial" />
    
    <content type="html" xml:lang="en" xml:base="http://geekdom.net/blog/">
        <![CDATA[<p>I recently created a new account for company whose service is a hybrid of web-era scalability and accessibility combined with metered, nearly-instant access to a physical product... in other words, a site which it's important that my account not be easily compromised, because someone somewhere could run up a bill for services I didn't personally get to use.</p>

<p>During the signup process, I got to the now-standard "Security Question" phase (though, they oddly call it a "Secret" question, even though they'll show it to anyone who pretends to be you having lost your password), and was amused to see this option. Here's what I saw:</p>

<p><img src="http://s3dist.geekdom.net/public/blogposting/2007/bad-security-questions.png" alt="Security Question" /></p>

<p>Yes, they're asking a question for which there are only 50 legitemate answers, for which many individual's friends will have a good chance at guessing correctly .... and then they go one step further, and <em>exclude 3 of the states</em> (Ohio, Iowa and Utah are not 5 characters long).</p>

<p>Fwew. Thanks goodness Ohio (sure to trivially <a href="http://geekdom.net/bryanpendleton.html">show up</a>, in my case, on an appropriate web search) wasn't long enough, or I might've fallen for it! :)</p>

<!-- technorati tags start --><p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/badsecurity" rel="tag">badsecurity</a></p><!-- technorati tags end -->
]]>
        

    </content>
</entry>
<entry>
    <title>Going one-numbered, while still tinkering with tons of gadgets</title>
    <link rel="alternate" type="text/html" href="http://geekdom.net/blog/archives/2007/08/19/going_onenumbered_while_still_tinkering_with_tons_of_gadgets.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://geekdom.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=455" title="Going one-numbered, while still tinkering with tons of gadgets" />
    <id>tag:geekdom.net,2007:/blog//1.455</id>
    
    <published>2007-08-19T22:05:06Z</published>
    <updated>2007-08-19T22:03:43Z</updated>
    
    <summary>I&apos;ve now been in Pittsburgh about a week. I have no local phone, no phone with nights-and-weekends, I&apos;m making constant calls inquiring about housing, and, yet, it&apos;s all probably still costing me less than it cost me the last time...</summary>
    <author>
        <name>Bryan</name>
        <uri>http://geekdom.net/blog/</uri>
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://geekdom.net/blog/">
        <![CDATA[<p>I've now been in Pittsburgh about a week. I have no local phone, no phone with nights-and-weekends, I'm making constant calls inquiring about housing, and, yet, it's all probably still costing me less than it cost me the last time I was on a cell phone contract with anyone.</p>

<p>Ok, before I go boasting all about it, my current situation is pretty complicated, and not really usable enough for the common man. That said, I've gotta' tell my stories, and the gripes that go with it, if only to be able to defer a length explanation the next time it comes up in conversation.</p>

<p>My current situation is composed of several delicately interwoven systems:
1) My now several-year-old Asterisk system. It contains many weird optimizations to <a href="http://geekdom.net/blog/archives/2007/07/10/why_sip_sucks_and_iax_rocks_a_rant_on_latency_and_the_media_path.html">minimize latency</a>, <a href="http://geekdom.net/blog/archives/2006/05/25/the_coming_voip_instapricewar.html">pick the cheapest way to complete the call at runtime based on current market conditions</a>, among others.
2) My GrandCentral number. This is the only number I give to people anymore, unless they need to SMS me.
3) Physical VoIP hardware (in this case, an old Sipura SPA-2000)
4) AT&amp;T Prepaid phone on its $1/day + minutes plan.
5) <a href="http://geekdom.net/blog/archives/2006/09/12/sidekick_toll_averter_wife_alerter.html">The Sidekick Toll Averter</a>, Wife Alerter (now with better CID hacking)</p>

<p>What have I woven together with these systems? Well, I use GrandCentral pretty much as described... except that, to ring my AT&amp;T cell phone, I run the call through my VoIP system first. Basically, I discovered that AT&amp;T's way of figuring out if a call is on the AT&amp;T network just looks at the callerID. Thus, I complete the call from GrandCentral to my cell phone in a way that advertises an AT&amp;T cell phone number as the originating caller ID - and only have to pay for the cost of the VoIP call ($0.005/minute), vs the non-network rate for AT&amp;T prepaid ($0.10/minute). Yes, it's 20x cheaper to use my prepaid cell phone with this trick.</p>

<p>Detailed explanation:</p>

<blockquote>
  <p>Basically, I created a new <a href="http://sipphone.com">SipPhone.com</a> account, which my Asterisk server registers itself with. I added the SIPphone 747 number as one of my GrandCentral numbers, since they recently began offering VoIP call completion using GizmoProject/SipPhone numbers. I then arranged a special extension inside of my Asterisk to answer that SipPhone number - it first sets the callerID to an appropriate AT&amp;T number, then initiates the outgoing call. Head spinning yet?</p>
</blockquote>

<p>So, this lets me use a prepaid cell phone for $1/day+0.005/minute any day I use it. If I don't use it on a given day, it costs me $0 that day. Put another way, if I only use the phone on average every other day, but still make 500 minutes of calls (the typical cell phone plan of my friends and associates), it'll cost me as little as $17.50/mo to use this service. Yeah, for 500 minutes.  In fact, at the highest rate I pay for VoIP minutes, using the phone every day of the month, I'd still only pay $40/mo for the service. Not $40+taxes and fees, $40 total. Nuts, eh?</p>

<p>But wait, you say! That's only for incoming calls! True, outgoing calls are still $0.10/minute.... if I make them. But, since this is essentially a temporary, throwaway phone, I don't actually want to make direct outgoing calls.... then the people I call might end up using a throwaway number to call me after I've thrown it away. Instead, I wove another way to make outgoing calls and have the CallerID show my GrandCentral number, while also avoiding the $0.10/minute outgoing trap of the prepaid phone. Basically, I either use my <a href="http://geekdom.net/blog/archives/2006/09/12/sidekick_toll_averter_wife_alerter.html">Sidekick Toll Averter Wife Alerter</a> web interface to initiate the call, or, I call a special number that, when called from my cell phone, hangs up on me and calls me back, giving me a dialtone. Of course, either of these cases is set to connect the call to my cell phone using an AT&amp;T number for CallerID, thus, the calls are still only $0.005/minute (well, generally 2x that, as I still have to place another call to someone else after I get the dialtone - I end up paying for two outgoing VoIP calls, linked to each other).</p>

<p>So, now, people can call me on my GrandCentral number, and I can pick it up for free while at home, for $1/day+0.005/minute from my cell, or at any other phone I might be sitting near long enough to have added it to the GrandCentral hunt list. I can make outgoing calls, although I do lose the ability to use the cell phone's local call history, since all it shows are incoming calls from that special AT&amp;T number I've been using.</p>

<p>All in all, this is working out very well. I've been in some state of moving now for nearly a month, and, yet, I've stayed well inside the $60 that I'd normally spend on cell phone service in years past. Meanwhile, for another $1/day, my wife, who's still on the west coast, also has an AT&amp;T prepaid phone, and we can spend as much time as we'd like chatting on any given day.  Once she moves out here, we can toss all of these electronics in the recycling bin for all I care, since we've got no contract, and the phones only cost $10/each after rebate and initial service allocation. Who can complain?</p>

<p>One more gripe: When I'm making calls using the dialback or web-initiated methods, I'm using 2 channels of VoIP. I've arranged my provider-picking priority to it nearly always chooses my <a href="http://connect.voicepulse.com/">Voicepulse Connect</a> account... these guys are great, and, though their highest rate, at $0.019/minute, is relatively expensive for VoIP calls, most of my calls end up costing between 0.005 and 0.010. Keeping both legs of the call on the same provider means that, using the <a href="http://geekdom.net/blog/archives/2007/07/10/why_sip_sucks_and_iax_rocks_a_rant_on_latency_and_the_media_path.html">IAX native transfer function</a>, I can actually remove virtually all latency from the call, effectively using VoicePulse as a local switchboard. This is great, except that Voicepulse limits each account to 4 simultaneous channels unless you pay quite a bit extra in monthly service fees. It's not hard to use up 4 channels when you're using them up 2 at a time (and your wife has access to the same tricks), and this has turned out to be a problem of late. I can understand the limit, in principle. However, since anyone with a credit card can sign up for an account with them, and they don't appear to have any rules against having multiple accounts, it makes no sense that Voicepulse charges extra for the ability to open up more channels. <em>sigh</em></p>

<!-- technorati tags start --><p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/grandcentral" rel="tag">grandcentral</a>, <a href="http://www.technorati.com/tag/voip" rel="tag">voip</a>, <a href="http://www.technorati.com/tag/voiptricks" rel="tag">voiptricks</a></p><!-- technorati tags end -->
]]>
        

    </content>
</entry>
<entry>
    <title>Nit: Ajax websights and wifi redirect pages</title>
    <link rel="alternate" type="text/html" href="http://geekdom.net/blog/archives/2007/08/12/nit_ajax_websights_and_wifi_redirect_pages.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://geekdom.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=454" title="Nit: Ajax websights and wifi redirect pages" />
    <id>tag:geekdom.net,2007:/blog//1.454</id>
    
    <published>2007-08-12T14:13:35Z</published>
    <updated>2007-08-12T21:14:15Z</updated>
    
    <summary>So, as many of you know, I&apos;ve been road-tripping across the US of late. I&apos;m now in Pittsburgh, after a little over 3600 miles of not-the-straightest-path cross-country road trip. Along the way, I encountered a lot of different kinds of...</summary>
    <author>
        <name>Bryan</name>
        <uri>http://geekdom.net/blog/</uri>
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://geekdom.net/blog/">
        <![CDATA[<p>So, as many of you know, I've been road-tripping across the US of late. I'm now in Pittsburgh, after a little over 3600 miles of not-the-straightest-path cross-country road trip.</p>

<p>Along the way, I encountered a lot of different kinds of Internet and Wifi availability. There was the Chicago Hyatt Regency, where we stayed during the <a href="http://yearlykosconvention.org/">YearlyKOS</a> conference... which wanted something like $14/day to use their in-room Internet (which I had to troubleshoot and fix the wiring of to get working, but that's another story.). There were many cafes and motels along the way with Internet connectivity.... even in <a href="http://en.wikipedia.org/wiki/Mexican_Hat,_Utah">Mexican Hat Utah</a>, a tiny little town just outside of Monument Valley.</p>

<p>But, most of them, even if they offered free Internet connectivity, had you go through some sort of Wifi login/confirmation redirect page. These things are the devil to begin with, but they suffer from a couple of notable specific faults:</p>

<p>1) Many don't keep track of the original page you were surfing to. Ever try opening Firefox with a session restore feature turned on with one of these? You get a whole bunch of tabs with the login page, and virtually no way to go back to whatever page <em>was</em> in your session. Ugh.
2) Few Ajax apps seem to check properly for these conditions, and either fail in odd ways when they make a request, or don't offer an appropriate way to keep going once you've fixed things. Nothing like having to reload a heavy Ajax app (Gmail, I'm looking at you...) on a slow or expensive link because someone wanted to inject their hotel branding into your Internet experience.</p>

<p>Fortunately, both are correctable. Several of these tools actually <em>do</em> remember where you were surfing when you hit their redirect pages, and will set you back there once you log in, so point #1 is definitely avoidable. Point 2 is more tricky, of course, since it requires the web app author to code more defensively. Anyone out there know a good 3-line or less idiom to catch and report this kind of offense in a Javascript snippet, so it can be published alongside this rant for all of posterity?</p>

<p>More updates on the trip itself when I have time.... short excerpts of my progress were chronicled on my twitter site, though, which can still be seen here: <a href="http://twitter.com/bp">http://twitter.com/bp</a></p>

<!-- technorati tags start --><p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/ajax" rel="tag">ajax</a>, <a href="http://www.technorati.com/tag/rants" rel="tag">rants</a>, <a href="http://www.technorati.com/tag/wifi" rel="tag">wifi</a></p><!-- technorati tags end -->
]]>
        

    </content>
</entry>
<entry>
    <title>In the doghouse: iamidentity.com imdentity.com</title>
    <link rel="alternate" type="text/html" href="http://geekdom.net/blog/archives/2007/07/17/in_the_doghouse_iamidentitycom_imdentitycom.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://geekdom.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=453" title="In the doghouse: &lt;strike&gt;iamidentity.com&lt;/strike&gt; imdentity.com" />
    <id>tag:geekdom.net,2007:/blog//1.453</id>
    
    <published>2007-07-17T17:53:44Z</published>
    <updated>2007-07-18T01:10:24Z</updated>
    
    <summary>I&apos;ve been tinkering lately with the mypw.com service, which offeres a SecureID-like service that&apos;s exposed as a webservice. Pretty nifty. I guess I was going to miss the two-factor SecureID I have working at PARC, or something. More on that...</summary>
    <author>
        <name>Bryan</name>
        <uri>http://geekdom.net/blog/</uri>
    </author>
            <category term="Editorial" />
    
    <content type="html" xml:lang="en" xml:base="http://geekdom.net/blog/">
        <![CDATA[<p>I've been tinkering lately with the <a href="http://mypw.com">mypw.com</a> service, which offeres a SecureID-like service that's exposed as a webservice. Pretty nifty. I guess I was going to miss the two-factor SecureID I have working at PARC, or something. More on that once I've got something fun working.</p>

<p>However, looking for other places to test things out, I noticed they have a partner, <a href="http://www.iamdentity.com">iamdentity</a>. These people win my first DogHouse award (in the style of Bruce Schneier). When you get to their website, it's not 100% clear what service they even offer. How does a service which keeps an additional copy of your personal information safeguard it, exactly? I  suppose single signon is useful, but.... </p>

<p>So, I click on the "New Client? Click to apply for an iamdentity account" link, which takes me to a scary questionnaire to "assess my risk". It's riddled with typos and questions you can't really answer correctly.... After scary questions like "Have you ever been successful in ensuring all your personal data has been deleted after canceling a subscription?", and "How often do you familiarise yourself with a sites data protection and online security policy?", you get to click a button and get an answer. I'm pretty sure the best result you can get is:</p>

<blockquote>
  <p>Although you do spare a thought for personal information security, you are not doing enough and risk becoming the victim of an opportunistic fraudster.</p>
  
  <p>You have taken some precausions to prevent your identity being stolen, but not all the holes are covered yet.</p>
</blockquote>

<p>Of course, you're still offered the chance to apply for an account. In the following form, oddly, they ask you for a ton of personal information. Hrm, how are they protecting me, exactly? This form loads from a different domain than iamidentity, some mysterious "ssl-01.com". You want me to trust my privacy to a company that's too cheap to even follow standard practices and register their own SSL cert? And I'm never <em>once</em> given control of the encryption key that stores my data (if, in fact, there even <em>is</em> encryption against my stored data, which I highly doubt).</p>

<p>Once done with the form, you get e-mailed a confirmation link, which includes your initial password. When you log in, they e-mail you again, this time with the session PIN. Apparently, they'll do this each time you sign up. I'm unconvinced how much this helps security, but it certainly does slow down the process, increasing the chance someone's going to ditch their service entirely.</p>

<p>Once logged in, you can see that they're trying to integrate with a small list of probably e-commerce sites. I guess they <em>do</em> do something, after all. No one on the list I've heard of, so, no reason for the account, and the MyPW integration only comes if you pay MyPW $20/year for service on their token. Unfortunately, when I clicked on the "cancel account" link it leads to an error message implying I'll have to contact support to cancel my account (but with no link, error number, or other details). Huh, wasn't one of their questions <em>"Have you ever been successful in ensuring all your personal data has been deleted after cancelling a subscription?"</em> Sure gonna' be tricky this time. The initial e-mail links to a web page for support, but, when I go there, it says I have to e-mail <strike>support@iamidentity.com</strike>support@iamdentity.com for anything other than password or initial signup concerns. So, I do... leaving an ironic comment in the e-mail at the absurdity of this process from a company supposedly providing a user-information-management solution. </p>

<p>... and nothing happened. I made the request to cancel my account nearly 2 weeks ago, and yet, my account still exists. No response to my e-mail was received. </p>

<p>Stay <em>far</em> <em>far</em> away from these snake oil salesmen.</p>

<p>Update: Sheesh. One of my other problems with this site is that, at least for me, it's cognitively difficult to spell their domain. I, for some reason, easily type iam<em>i</em>dentity, when it's just plain imdentity. They could have at least registered the common typo domain and redirected. <em>sigh</em></p>

<!-- technorati tags start --><p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/badsecurity" rel="tag">badsecurity</a>, <a href="http://www.technorati.com/tag/doghouse" rel="tag">doghouse</a>, <a href="http://www.technorati.com/tag/rants" rel="tag">rants</a></p><!-- technorati tags end -->
]]>
        

    </content>
</entry>
<entry>
    <title>Why SIP sucks and IAX rocks - a rant on latency and the media path</title>
    <link rel="alternate" type="text/html" href="http://geekdom.net/blog/archives/2007/07/10/why_sip_sucks_and_iax_rocks_a_rant_on_latency_and_the_media_path.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://geekdom.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=450" title="Why SIP sucks and IAX rocks - a rant on latency and the media path" />
    <id>tag:geekdom.net,2007:/blog//1.450</id>
    
    <published>2007-07-10T17:20:25Z</published>
    <updated>2007-07-10T17:50:43Z</updated>
    
    <summary>As many of you know, I tend to tinker with technologies... not to build a business around them, but to add them to my bag-o-tricks, or just for the shear fun of doing something that you can&apos;t get as easily,...</summary>
    <author>
        <name>Bryan</name>
        <uri>http://geekdom.net/blog/</uri>
    </author>
            <category term="VoIP" />
    
    <content type="html" xml:lang="en" xml:base="http://geekdom.net/blog/">
        <![CDATA[<p>As many of you know, I tend to tinker with technologies... not to build a business around them, but to add them to my bag-o-tricks, or just for the shear fun of doing something that you can't get as easily, cheaply, or, if possible, at all on the open market.</p>

<p>For the last several years, I've been playing around with VoIP. Hardware, software, various ins-and-outs. And, while there are dozens of blog posts I could write about what I've learned, today I'm going to cover one of the issues I've spent the most time tinkering with, because its one of the issues that every VoIP company has to deal with to satisfy their customers.</p>

<p>Several things go into the perceived quality of a telephone call - fidelity, echo, reliability.... and transmit delay. Transmit delay is tricky - up to a certain point, delay doesn't greatly affect the happiness of the callers, but, after a certain point (around 100ms of total delay, a rough amount of latency from many kinds of technologies that start to get annoying), the delay on a call makes conversation harder. So, as a tinkerer with less-than-top-notch equipment and connectivity, I've spent quite a bit of time over the last few years trying to remove latency from the systems I use for VoIP.</p>

<p>This is tricky, of course. You can look up that your provider is in New York, say, and that your colocated box where you run your VoIP is in Pennsylvania. In theory, that should be close enough that the extra latency isn't very noticable. That is, until you discover there are many different ways the Internet might route between New York and Pennsylvania.</p>

<p>One of my best tricks, as the title of this blog implies, is to use a better tool for the VoIP, and thus get out of the way. I use the open-source Asterisk for my VoIP software, which supports both the standards-based SIP VoIP protocol, and its own, proprietary-but-open IAX protocol. SIP has the benefit of being implemented in fairly widely available hardware... IAX is, to a few exceptions, not supported in hardware. But, IAX has a few really killer features: it has a guaranteed-success transfer handoff, and a small enough base of supported devices that interoperability is rarely a problem. If you want to remove latency from your calls with IAX, you just have to teach your system to hand off the transfer of the media path to the two endpoints - no more routing through Pennsylvania even if both the caller and the callee are on the west coast.</p>

<p>SIP <em>can</em> do this, but, it has a much more complicated media path, and a much bigger pool of implementations. With SIP, you might try to do the same trick where you hand off the media path to be direct between the source and destination, but only find out it didn't work when you get a support call complaining that there was no audio on the call. Or, you have to use elaborate discovery tools on your network to figure out which devices are behind a firewall, and which ones aren't, and then check those results before trying to hand off a call.</p>

<p>In my own setup, I have tags I apply to the incoming channels on my Asterisk system. If a call is IAX, I deliberately try to complete it using IAX, and get my system out of the path. Otherwise, I have SIP set up to hand off where it can, but, in practice, I have to leave the configurations a little bit conservative to avoid no-sound issues from cropping up periodically: my callers pay with extra delay.</p>

<p>Bigger corps have different approaches (and, with few exceptions, all have to use SIP). I've read that Vonage has regional centers, and your device is setup to detect the closest one and use that. Then, presumably, they have internal rules to minimize the total network distance your call crosses. Too hard for someone small-time like myself, but probably very effective. GizmoProject seems to push <em>everything</em> through their SIP proxy. Even if you call from one phone on your local network to another. I believe they can still fix the media channel some of the time, though I'm pretty sure its beyond the reach of the Asterisk SIP implementation.</p>

<p>It's hard to get right... especially because some of the ways you can transfer a call effectively put you outside of the call - if you need to bill on that call, this just isn't an option. Here's hoping the day comes soon when providers just charge for listing and support: when we stop paying per minute, we can stop worrying about auditing every second of every call, and instead focus on delivering the best sound experience. Skype has got this right, and cheers to them for their routinely very high call quality.... but, they're not using SIP or IAX, so there's not much that can be learned from them directly.</p>

<p>Unfortunately, my favorite (and, at this point, the only one I've never had a serious gripe with the service of) VoIP provider started out as an IAX-only shop (<a href="http://iax.cc/">http://iax.cc/</a>), but got bought-up to a bigger firm that has now started to treat their IAX features as deprecated (<a href="http://vitelity.com/">http://vitelity.com/</a>). I hope I'm small-time enough that they let me keep the IAX side active - I sure do appreciate the better call quality that results. Further unfortunately, I'm moving across the country soon, so I'm going to have to reconsider what all of my most-prefered choices are for colocation and VoIP routing. Good for my family, though, who is centered nearer where I'll be living, and are likely to end up with better call quality all around. <em>sigh</em></p>

<p>Ok, </rant>. If anyone reading this is interested in my tricks to detect source channel type and try to send outgoing calls to an appropriately matched destination channel type, please chime in on the comments. It's all done with Asterisk macros, and it isn't quite a drop-in fix, unfortunately.</p>

<!-- technorati tags start --><p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/iax" rel="tag">iax</a>, <a href="http://www.technorati.com/tag/latencysucks" rel="tag">latencysucks</a>, <a href="http://www.technorati.com/tag/sip" rel="tag">sip</a>, <a href="http://www.technorati.com/tag/voip" rel="tag">voip</a>, <a href="http://www.technorati.com/tag/voiptricks" rel="tag">voiptricks</a></p><!-- technorati tags end -->
]]>
        

    </content>
</entry>
<entry>
    <title>Why I&apos;m going to miss California...</title>
    <link rel="alternate" type="text/html" href="http://geekdom.net/blog/archives/2007/06/25/why_im_going_to_miss_california.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://geekdom.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=449" title="Why I&#39;m going to miss California..." />
    <id>tag:geekdom.net,2007:/blog//1.449</id>
    
    <published>2007-06-25T19:32:54Z</published>
    <updated>2007-06-25T19:45:18Z</updated>
    
    <summary>When I first met Joy she&amp;#8217;d clipped a weekly weather forecast from the newspaper, and posted it to her door in her graduate student housing. The clip had been up for several years when I met her, but the irony...</summary>
    <author>
        <name>Bryan</name>
        <uri>http://geekdom.net/blog/</uri>
    </author>
            <category term="Personal" />
    
    <content type="html" xml:lang="en" xml:base="http://geekdom.net/blog/">
        <![CDATA[<p>When I first met Joy she&#8217;d clipped a weekly weather forecast from the newspaper, and posted it to her door in her graduate student housing. The clip had been up for several years when I met her, but the irony still stood true: the forecast bent over backward to use varied euphemisms for &#8220;it&#8217;ll be sunny most of the day&#8221;, and, the forecast was correct about 80-90% of the time.</p>

<p>As I started contemplating the <a href="http://geekdom.net/blog/archives/2007/06/12/the_big_announcement_cmu_hcii_pittsburgh_grad_school.html">big change that was coming</a>, I started peaking at the weather a little more often than I had. Sure enough, even the online electronic forecasts have this problem. Here are two clippings from weather.com across the last two months:</p>

<p><img src="http://s3.amazonaws.com/s3dist.geekdom.net/public/blogposting/2007/weather-may16-2007.png" alt="" />
<img src="http://s3.amazonaws.com/s3dist.geekdom.net/public/blogposting/2007/weather-june25-2007.png" alt="" /></p>

<p><em>sigh</em> I&#8217;m going to miss the Bay Area.</p>

<!-- technorati tags start --><p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/bayarea" rel="tag">bayarea</a>, <a href="http://www.technorati.com/tag/weather" rel="tag">weather</a></p><!-- technorati tags end -->
]]>
        

    </content>
</entry>
<entry>
    <title>The big announcement: CMU HCII, Pittsburgh, grad school!</title>
    <link rel="alternate" type="text/html" href="http://geekdom.net/blog/archives/2007/06/12/the_big_announcement_cmu_hcii_pittsburgh_grad_school.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://geekdom.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=448" title="The big announcement: CMU HCII, Pittsburgh, grad school!" />
    <id>tag:geekdom.net,2007:/blog//1.448</id>
    
    <published>2007-06-13T01:23:10Z</published>
    <updated>2007-06-13T02:50:06Z</updated>
    
    <summary>To complete the blog-reawakening, I promised to explain the big change coming up in my life: After 6 years as an individual contributor at a fine private-sector research lab, I&apos;ve decided it&apos;s time to complete my ultimate plan, and go...</summary>
    <author>
        <name>Bryan</name>
        <uri>http://geekdom.net/blog/</uri>
    </author>
            <category term="Personal" />
    
    <content type="html" xml:lang="en" xml:base="http://geekdom.net/blog/">
        <![CDATA[<p>To complete the <a href="http://geekdom.net/blog/archives/2007/06/04/the_long_blog_drought.html">blog-reawakening</a>, I promised to explain the big change coming up in my life: After 6 years as an individual contributor at a <a href="http://www.parc.com/">fine private-sector research lab</a>, I've decided it's time to complete my ultimate plan, and go back to school for a PhD.</p>

<p>After much work, applications, exams, discussions and soul-searching, the final decision was to join the <a href="http://hcii.cmu.edu/">Human Computer Interaction Institute</a> at <a href="http://www.cmu.edu/">Carnegie Mellon University</a>. My plan is to pursue a PhD project which focuses around the issues of Usable Security, that is, building systems that are more secure than their alternatives, but also have a better user experience. See, for instance, PARC's <a href="http://www.parc.xerox.com/research/projects/usablesecurity/niab.html">Network-In-A-Box</a> project for an idea of what I mean. CMU's HCI program appears to be ideal for this, with a  world class HCI program, as well as ongoing research which targets the same field.</p>

<p>Pittsburgh will be an adjustment after 6 years living in Silicon Valley, but I'm definitely looking forward to the program.</p>

<!-- technorati tags start --><p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/cmu" rel="tag">cmu</a>, <a href="http://www.technorati.com/tag/hci" rel="tag">hci</a>, <a href="http://www.technorati.com/tag/usablesecurity" rel="tag">usablesecurity</a></p><!-- technorati tags end -->
]]>
        

    </content>
</entry>

</feed> 

