<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.11" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>njr 3.0</title>
	<link>http://njr.sabi.net</link>
	<description>Nicholas Riley’s weblog</description>
	<pubDate>Sat, 23 Apr 2011 19:57:09 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.11</generator>
	<language>en</language>
			<item>
		<title>Free</title>
		<link>http://njr.sabi.net/2011/03/19/free/</link>
		<comments>http://njr.sabi.net/2011/03/19/free/#comments</comments>
		<pubDate>Sun, 20 Mar 2011 03:42:28 +0000</pubDate>
		<dc:creator>Nicholas Riley</dc:creator>
		
		<category>Computing</category>

		<guid isPermaLink="false">http://njr.sabi.net/2011/03/19/free/</guid>
		<description><![CDATA[Finally moved everything off PBXes today.  (Of course, I can&#8217;t delete the PBXes account until it expires.)  I feel quite a bit better to no longer be trusting my phone service to a company like that.
I replaced it with Yate and FreeSentral running on a VPS.  I can&#8217;t say setting up Yate [...]]]></description>
			<content:encoded><![CDATA[<p>Finally moved everything off <a href="http://njr.sabi.net/2010/10/05/pbxes/">PBXes</a> today.  (Of course, I can&#8217;t delete the PBXes account until it expires.)  I feel quite a bit better to no longer be trusting my phone service to a company like that.</p>
<p>I replaced it with <a href="http://yate.null.ro/pmwiki/">Yate</a> and <a href="http://www.freesentral.com/">FreeSentral</a> running on a VPS.  I can&#8217;t say setting up Yate was easy or the documentation was great, but the software seems robust and I like the architecture.  Particularly, I was impressed that I was able to use FreeSentral where it worked, but able to override routing where needed <em>without</em> modifying FreeSentral.</p>
<p>A Yate troubleshooting tip: run with <tt>-vvvvv</tt> and read the <em>entire</em> log file. Just because something appears to fail in a particular place doesn&#8217;t mean it has (i.e, that you&#8217;re reading the log correctly), or that the failure was at that place. It could have been much earlier, such as during module loading.  Knowing this would have saved me many a wasted hour.
</p>
]]></content:encoded>
			<wfw:commentRss>http://njr.sabi.net/2011/03/19/free/feed/</wfw:commentRss>
		</item>
		<item>
		<title>pbxes.com (PBXes, i-p-tel): horrendously bad customer service</title>
		<link>http://njr.sabi.net/2010/10/05/pbxes/</link>
		<comments>http://njr.sabi.net/2010/10/05/pbxes/#comments</comments>
		<pubDate>Tue, 05 Oct 2010 21:17:17 +0000</pubDate>
		<dc:creator>Nicholas Riley</dc:creator>
		
		<category>Computing</category>

		<guid isPermaLink="false">http://njr.sabi.net/2010/10/05/pbxes/</guid>
		<description><![CDATA[Since my posts to their forum keep getting deleted, I&#8217;ll post here.
Here&#8217;s what happened:
August 10: I created a free account (nriley).
August 12: Happy with the service, I created another free account for my father (griley).
Because I liked the service so much, I decided to upgrade to a paid service—supporting automatic failover and more features.
August 27: [...]]]></description>
			<content:encoded><![CDATA[<p>Since my posts to their forum keep getting deleted, I&#8217;ll post here.</p>
<p>Here&#8217;s what happened:</p>
<p><strong>August 10:</strong> I created a free account (<strong>nriley</strong>).</p>
<p><strong>August 12:</strong> Happy with the service, I created another free account for my father (<strong>griley</strong>).</p>
<p>Because I liked the service so much, I decided to upgrade to a paid service—supporting automatic failover and more features.</p>
<p><strong>August 27:</strong> I created an account the two of us could share (<strong>riley</strong>) and attempted to upgrade it to paid, after which I planned on deleting the individual accounts, so there was no interruption in service.  Despite <a href="http://www4.pbxes.com/forum/thread.php?threadid=1275376774&#038;sid=bdf40b43938e7acf3d80263e56143c0c">this thread</a>, which makes it pretty clear their customers are asking for additional payment providers, the only choice is PayPal.</p>
<p>Only after attempting to pay via PayPal, I got an email that PBXes required my PayPal account be verified (that is, linked with a bank account).  I&#8217;ve never had any other payee require I have a verified PayPal account, but I imagine they&#8217;ve had their share of fraud, so I understood.  I don&#8217;t trust PayPal with my primary bank account information, so I ended up using a separate bank account for the purpose.  This took a few weeks as I had to get the bank account set up for online access so I could observe the PayPal deposits.</p>
<p>While PBXes ordinarily provides absolutely no way to contact them without paying them money (via PayPal) first, PayPal does require a contact email address be included in the transaction receipt; I emailed this address asking about other payment methods, but received no response.</p>
<p>Over the intervening weeks, PBXes &#8220;discovered&#8221; that I had multiple accounts created and began to automatically disable them for <a href="https://www4.pbxes.com/iptel_agb_e.html">TOS</a> violations.</p>
<ul>
<li><b>August 31:</b> Received an email that <strong>griley</strong> would be disabled (same name/email/postal address as <strong>riley</strong>).
</li>
<li><b>September 1:</b> Received an email that <strong>riley</strong> would be disabled.
</li>
<li><b>October 1:</b> Received an email that <strong>nriley</strong> would be disabled (<strong>different</strong> name/email/postal address from <strong>griley</strong> and <strong>riley</strong>).
</li>
</ul>
<p>Keep in mind the <strong>riley</strong> account had <strong>never been used</strong> (except for my abortive attempt to pay for it). The original two accounts, <strong>nriley</strong> and <strong>griley</strong> were in use by two different people (myself and my father) so they didn&#8217;t violate the TOS <em>at all</em>.  <strong>If I really wanted to violate the TOS, do you think I would have used the exact same, valid name and address information!?</strong></p>
<p>Here&#8217;s what the account blocking email looks like:</p>
<pre>
we noticed that you created more than one account at PBXes.
That is welcome but also creates considerable load on our servers.
Better would be to stay under a single account as written in our
Terms of Service.                                                               

You can delete or upgrade the additional account                                

riley                                                                           

to paid within the next 5 days. Otherwise we are going to disable it.
Thanks for your cooperation.
</pre>
<p>What is not clear from this are some properties of a &#8220;disabled&#8221; account:</p>
<ul>
<li>If you try to call a phone number associated with this disabled account from another PBXes account, <strong>the call does not go through</strong>, even if the call would not ordinarily be routed through PBXes.
</li>
<li><strong>You can&#8217;t reuse any SIP trunk</strong> associated with this disabled account in another account.
</li>
<li>You can&#8217;t view or edit any settings associated with the disabled account to remove this trunk or copy the information to another account.
</li>
<li><strong>You can&#8217;t even delete the account.</strong>
</li>
</ul>
<p>So, not only was my father&#8217;s account blocked, but I was <strong>unable to call his phone number</strong> from my PBXes account.</p>
<p>Eventually I got the bank account added to PayPal, and the shared account paid for, then PBXes had its own verification which took a further few days, which thankfully happened in time for me to cancel <strong>nriley</strong> and move over to <strong>riley</strong> without any interruption in service.  My father had no such luck; as you can see above, he was without phone service for nearly a month.</p>
<p>After getting the paid account set up, I made three requests via messages on PBXes&#8217; forum (since there was no other way to contact PBXes short of paying for support, and several other similar account-related messages were responded to, for example <a href="http://www4.pbxes.com/forum/thread.php?threadid=1286155708&#038;sid=6c8c7ee8ac75fa17261cd97c51f7cf7d">this one</a>).</p>
<ul>
<li>On Friday, I asked if my father&#8217;s account could be unblocked so I could copy the settings out of it.  This post was initially locked to replies without a response, but remained in the forum.
</li>
<li>Today, I asked if my father&#8217;s account could be deleted so the trunk could be accessible to my account.  This post was deleted without a response several minutes later.
</li>
<li>Finally, I posted a longer version of the second post, which made it clearer my purpose was simply to make use of the account I had already paid for, as well as including conciliatory statements such as &#8220;I&#8217;m not trying to make any trouble&#8221; and expressing my frustration about the hoops I had to jump through.  This post was deleted immediately, then shortly thereafter Friday&#8217;s post was deleted too with no relevant explanation.
</li>
</ul>
<p>So, my only choice was to <strong>pay for an account I did not intend to use, just for the &#8220;privilege&#8221; of deleting it</strong>.</p>
<p>Note at no point in this saga have I been personally addressed by any representative of PBXes/i-p-tel; just sent automated messages and left to wonder about their motivations, which at this point seem at best bizarre; at worst, malicious, bullying and extortionate (<strong>you must pay us more money to use an account you have already paid for</strong>).  Certainly, it&#8217;s their company and their right, but I&#8217;d never treat a customer like this in my life.</p>
<p>All I can do is recommend other people stay far, far away from PBXes&#8217; service. Of course, PBXes doesn&#8217;t offer refunds, so I&#8217;ve got to pay for a year of their service regardless, plus a month of service on <strong>griley</strong> just so I can delete the associated trunk.
</p>
]]></content:encoded>
			<wfw:commentRss>http://njr.sabi.net/2010/10/05/pbxes/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Android venting</title>
		<link>http://njr.sabi.net/2010/03/29/android-venting/</link>
		<comments>http://njr.sabi.net/2010/03/29/android-venting/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 14:13:06 +0000</pubDate>
		<dc:creator>Nicholas Riley</dc:creator>
		
		<category>Computing</category>

		<guid isPermaLink="false">http://njr.sabi.net/2010/03/29/android-venting/</guid>
		<description><![CDATA[I became so incredibly frustrated with Android last night that I had to vent somewhere. Sorry for all of you who have heard this before.
With the hiptop, it seemed that there was some considerable effort expended in asking &#8220;what is annoying about using devices on a flaky cellular network?&#8221; The OS and applications incorporated all [...]]]></description>
			<content:encoded><![CDATA[<p>I became so incredibly frustrated with Android last night that I had to vent somewhere. Sorry for all of you who have heard this before.</p>
<p>With the hiptop, it seemed that there was some considerable effort expended in asking &#8220;what is annoying about using devices on a flaky cellular network?&#8221; The OS and applications incorporated all kinds of wonderful features, from aggressive buffering and queuing to a standard &#8220;this hasn&#8217;t been sent&#8221; indication (italics) to the &#8220;your web page is done&#8221; notification—it all worked well and was a source of enjoyment and delight even when the network was broken.</p>
<p>With Android, this doesn&#8217;t happen. Not at all. Standard Android applications (particularly Market) do an astonishingly atrocious job of handling network drops, download failure, etc. A modal dialog telling you &#8220;THE SERVER IS DOWN&#8221; is completely useless and user-hostile. Operations that seem like they should not require a network connection (like seeing the list of installed applications) load in multiple undefined stages that make you wonder if something broke. Asynchrony seems to be in all the wrong places.</p>
<p>A very obvious example of the difference is the data connection icon. As maligned as it was thanks to T-Mobile network failures, the 3-dot connection icon on the hiptop was wonderful; it was clear to both technical (for whom the dots had actual meaning) and nontechnical users that the process of connecting to a cellular data network had several stages, and that it was quite possible to have a data connection without an operable Internet connection over it.</p>
<p>Oh look, Google Voice just failed to download. The notification says &#8220;Download unsuccessful.&#8221; So helpful. When I tap on that notification, it lets me stare at a &#8220;Loading&#8230;&#8221; spinner for 30 seconds before I get &#8220;Attention: A network error has occurred. Retry, or cancel and return to the previous screen.&#8221; I&#8217;ve got 3G data with 4 bars.</p>
<p>The words that came out of my mouth at this point are not fit for posting on this blog.
</p>
]]></content:encoded>
			<wfw:commentRss>http://njr.sabi.net/2010/03/29/android-venting/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Pester 1.1b8 released</title>
		<link>http://njr.sabi.net/2010/03/25/pester-11b8-released/</link>
		<comments>http://njr.sabi.net/2010/03/25/pester-11b8-released/#comments</comments>
		<pubDate>Fri, 26 Mar 2010 04:43:51 +0000</pubDate>
		<dc:creator>Nicholas Riley</dc:creator>
		
		<category>Computing</category>

		<category>Mac OS X</category>

		<guid isPermaLink="false">http://njr.sabi.net/2010/03/25/pester-11b8-released/</guid>
		<description><![CDATA[Get it.
Pester 1.1 has been a long time coming. It’s been my own personal battle with the second-system effect. 1.1b8 is a big step towards finishing, though.

-rw-r--r--  1 nriley  users  295049 Oct 14  2002 Pester-1.0.dmg
-rw-r--r--  1 nriley  users  428727 Jan  7  2003 Pester-1.1b2.dmg
-rw-r--r--  1 nriley [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://web.sabi.net/nriley/software/#pester">Get it.</a></p>
<p>Pester 1.1 has been a <em>long</em> time coming. It’s been my own personal battle with the <a href="http://en.wikipedia.org/wiki/Second-system_effect">second-system effect</a>. 1.1b8 is a big step towards finishing, though.</p>
<pre>
-rw-r--r--  1 nriley  users  295049 Oct 14  2002 Pester-1.0.dmg
-rw-r--r--  1 nriley  users  428727 Jan  7  2003 Pester-1.1b2.dmg
-rw-r--r--  1 nriley  users  524911 Apr  9  2003 Pester-1.1b4.dmg
-rw-r--r--  1 nriley  users  749389 Nov 25  2007 Pester-1.1b5.dmg
-rw-r--r--  1 nriley  users  746933 Nov 27  2007 Pester-1.1b6.dmg
-rw-r--r--  1 nriley  users  756428 Nov 28  2007 Pester-1.1b7.dmg
-rw-r--r--  1 nriley  users  881197 Mar 25 23:34 Pester-1.1b8.dmg
</pre>
<p>The list of new features and bug fixes since 1.1b7 is substantial. Among them:</p>
<ul>
<li>Customizable alert sounds—the most requested feature. It uses QuickTime, so you&#8217;re welcome to pick a movie or even a bitmap or PDF to use as well. I&#8217;ve used the latter to display stretching exercises on a regular basis, for example.
</li>
<li>Selectable sound output device and volume for alert sounds. If you have your headphones and speakers accessible as separate output devices, as I do (e.g. if you have a Mac Pro or an external audio device), it&#8217;s useful to have the alert sound audible when you&#8217;re away from your desk. Change the output device from Preferences. (Note: Pester doesn&#8217;t yet respond to audio devices being connected/disconnected while it is running, although you should always get audio output <em>somewhere</em>.)
</li>
<li>Baseline, ICU-based support for non-natural language dates and times is much more robust (for example, simply “20” or “8p” works to specify 8:00 PM).
</li>
<li>Support natural-language dates in non-English languages via <tt>Date::Manip</tt>. I uncovered some bugs here, which the author of <tt>Date::Manip</tt> is working on fixing, but Catalan, Danish, Dutch, French, German, Polish and Russian should work fine. The date popup is limited to the days of the week, but that&#8217;s easily remedied (see below).
</li>
<li>Optionally wait until you stop typing or moving the mouse to display a message. This is quite helpful so you don&#8217;t start typing into the Snooze box when you want to be typing into another document.  The feature is disabled by default; enable it in Preferences.
</li>
<li>Handle time zone changes, many more time zones, and more reliably determine the time zone.
</li>
<li>Autocomplete common natural-language dates—my favorite new feature.
</li>
<li>Simplify tab order. I previously tried to do something very complex with the tab order, which confused Cocoa and could cause you to get “stuck” in some area of the window.
</li>
<li>Better save and restore focus when you&#8217;re working as an alarm goes off; will no longer bring unwanted windows to the front.
</li>
<li>Open the Set Alarm window in the current Space when triggered with a keyboard equivalent or the Dock menu.
</li>
<li>Switch to tomorrow automatically if necessary when tabbing into &#8220;on&#8221;. This is a feature I first implemented in Pester for hiptop, which I&#8217;m actually happier with than desktop Pester (see the aforementioned second-system effect). The upshot of this is that if you specify a time that&#8217;s already passed, while the specified date is today, simply tabbing into the date field will switch the date to tomorrow. It’s easier to use than to describe, really!
</li>
<li>Allow intervals up to 999 weeks.
</li>
<li>Display “today” and “tomorrow” in the bottom left corner of the Set Alarm window in case you can’t remember what day it is.
</li>
</ul>
<p>Note that the natural language date’s language is determined by the date format, as specified in System Preferences → Language &amp; Text → Formats.</p>
<p>If you speak Catalan, Danish, <strike>Dutch</strike>, French, <strike>German</strike>, <strike>Italian</strike>, Polish, Portuguese, Romanian, Russian, Spanish, <strike>Swedish</strike> or Turkish, it&#8217;d help if you could translate the date popup contents: </p>
<pre class="code">/* Date popup */
"today" = "today";
"tomorrow" = "tomorrow";
"in 2 days" = "in 2 days";
"next «day»" = "next «day»";
"next week" = "next week";
"in 2 weeks" = "in 2 weeks";
"next month" = "next month";
"in 2 months" = "in 2 months";
"in 1 year" = "in 1 year";</pre>
<p>Feel free to put the results in a comment or email them to me (pester at sabi.net).</p>
<p>If you&#8217;ve got any bug reports, comments or feature requests, please let me know. If you’re looking for things to test, read the release notes in the Read Me (Help menu) which summarize the changes since 1.0.</p>
<p>For now, the main thing that needs finishing for 1.1 is documentation (help wanted!). The latest source is on <a href="http://github.com/nriley/Pester/">GitHub</a>.</p>
<p>Enjoy!
</p>
]]></content:encoded>
			<wfw:commentRss>http://njr.sabi.net/2010/03/25/pester-11b8-released/feed/</wfw:commentRss>
		</item>
		<item>
		<title>NCIDpop 0.9.16 released</title>
		<link>http://njr.sabi.net/2010/01/11/ncidpop-0916-released/</link>
		<comments>http://njr.sabi.net/2010/01/11/ncidpop-0916-released/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 02:04:11 +0000</pubDate>
		<dc:creator>Nicholas Riley</dc:creator>
		
		<category>Computing</category>

		<category>Mac OS X</category>

		<guid isPermaLink="false">http://njr.sabi.net/2010/01/11/ncidpop-0916-released/</guid>
		<description><![CDATA[NCIDpop is a client for the NCID (Network Caller ID) server. See previous posts for more information on my work with NCIDpop.
New in this version:

Optional Growl notification support.
	
Formats phone numbers using Address Book preferences.
Skip leading 0s for Address Book lookup (useful outside the US/Canada).
Fixed saving of reverse lookup URL when you click the &#8220;Set&#8221; button [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://ncid.sourceforge.net/ncidpop/ncidpop.html">NCIDpop</a> is a client for the <a href="http://ncid.sourceforge.net/">NCID</a> (Network Caller ID) server. See <a href="http://njr.sabi.net/2009/06/16/ncidpop-0915-released/">previous</a> <a href="http://njr.sabi.net/2009/01/02/ncidpop-0914/">posts</a> for more information on my work with NCIDpop.</p>
<p>New in this version:</p>
<ul>
<li>Optional <a href="http://growl.info/">Growl</a> notification support.
	</li>
<li>Formats phone numbers using Address Book preferences.</li>
<li>Skip leading 0s for Address Book lookup (useful outside the US/Canada).</li>
<li>Fixed saving of reverse lookup URL when you click the &#8220;Set&#8221; button (was broken due to <a href="http://www.red-sweater.com/blog/229/stay-responsive">this</a> Cocoa misfeature).</li>
<li>Made networking code significantly more robust. One side effect: you should see much less log spam when the NCID server is unavailable, because the connection process is now interruptible.</li>
</ul>
<p>There&#8217;s now an active Windows maintainer and with the source code moved all the way from CVS to <a href="http://ncid.hg.sourceforge.net/hgweb/ncid/ncidpop/">Mercurial</a>, collboration should be significantly easier in future. The settings trigger is a bit tricky so I do plan on providing an easier alternative in a later version; that said, I&#8217;ve also got another 4–5 open source projects clamoring for my attention.</p>
]]></content:encoded>
			<wfw:commentRss>http://njr.sabi.net/2010/01/11/ncidpop-0916-released/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Android thoughts, part 2</title>
		<link>http://njr.sabi.net/2010/01/09/android-thoughts-part-2/</link>
		<comments>http://njr.sabi.net/2010/01/09/android-thoughts-part-2/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 23:51:40 +0000</pubDate>
		<dc:creator>Nicholas Riley</dc:creator>
		
		<category>Computing</category>

		<guid isPermaLink="false">http://njr.sabi.net/2010/01/09/android-thoughts-part-2/</guid>
		<description><![CDATA[I was going to write a longer Android post, but really, just go read this. Android might be a bit more tolerable if I hadn&#8217;t actually used better handheld devices, in the form of the hiptop, iPod touch/iPhone, early Palm OS and the Newton.

If you really do want to read what I was going to [...]]]></description>
			<content:encoded><![CDATA[<p>I was going to write a longer Android post, but really, just go read <a href="http://www.boygeniusreport.com/2010/01/09/google-android-personal-thoughts/">this</a>. Android might be a bit more tolerable if I hadn&#8217;t actually <em>used</em> better handheld devices, in the form of the hiptop, iPod touch/iPhone, early Palm OS and the Newton.</p>
<p>
If you really do want to read what I was going to write, <a href="http://njr.sabi.net/wp-content/uploads/2010/01/android/index.html">here are my notes</a>. (Everything up to &#8220;Six months later:&#8221; refers to my experience with the G1 in July; afterward, with the Nexus One.)</p>
]]></content:encoded>
			<wfw:commentRss>http://njr.sabi.net/2010/01/09/android-thoughts-part-2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Android thoughts</title>
		<link>http://njr.sabi.net/2010/01/05/android-thoughts/</link>
		<comments>http://njr.sabi.net/2010/01/05/android-thoughts/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 19:39:49 +0000</pubDate>
		<dc:creator>Nicholas Riley</dc:creator>
		
		<category>Computing</category>

		<guid isPermaLink="false">http://njr.sabi.net/2010/01/05/android-thoughts/</guid>
		<description><![CDATA[The rather anticlimactic conclusion to my mobile phone dilemma in June was the G1. I didn’t like it at the time and still don’t; however, the writing was on the wall for the hiptop, finally drained of life by Microsoft, and it was the only viable choice for smartphone-with-keyboard at the time. (Have you tried [...]]]></description>
			<content:encoded><![CDATA[<p>The rather anticlimactic conclusion to my mobile phone dilemma in June was the G1. I didn’t like it at the time and still don’t; however, the writing was on the wall for the hiptop, finally drained of life by Microsoft, and it was the only viable choice for smartphone-with-keyboard at the time. (Have you <em>tried</em> typing on a Palm Pre?)</p>
<p>Since I started using the G1, it&#8217;s received one minor OS update (1.5→1.6) and a few truly useful apps (Google Voice and Google Maps Navigation). The phone is still slow and unwieldy, with such poor battery life that I must carry multiple batteries and sometimes a charger around with me.</p>
<p>Today Google introduced their new phone, the <a href="http://www.google.com/phone/">Nexus One</a>, running Android 2.1. It’s not bad, but I doubt I’ll be buying one.</p>
<p>The Nexus One fixes the biggest problems with the G1: speed, storage, battery life and the lack of a real headphone jack. It adds a decent design and beautiful screen. For me, however, it also removes a major reason to use Android over the iPhone: a physical keyboard with a decent layout. I’m able to work around the awful Android Gmail app by using <a href="http://www.mutt.org/">Mutt</a> in a <a href="http://code.google.com/p/connectbot/">SSH client</a>; I couldn’t do that on the Nexus One.  (Soft keyboards are fine for typing text, not so much for interacting with a Unix system.)</p>
<p>The largest remaining problem with Android is the navigational UI. It:</p>
<ol>
<li>hides most options behind the context-sensitive Menu button
</li>
<li>fails to adequately expose hierarchy and the behavior of the Back button
</li>
<li>fails to adequately expose multiple running applications (“activities”)
</li>
</ol>
<p>The first two aren&#8217;t issues with the iPhone UI, and the last has been adequately addressed by webOS’s card model. It still surprises me, for a company whose Web applications are known for speed and efficiency, that the Android UI came out so badly.</p>
<p>Applications that try to innovate with UI on Android, of which the two that stick out most in my mind are the otherwise-terrific <a href="http://www.twofortyfouram.com/">Locale</a> and the Android 2.1 Gallery, tend to confuse more than they help. For example, Gallery <a href="http://www.google.com/support/android/bin/static.py?page=guide.cs&#038;guide=27201&#038;topic=27227&#038;answer=168556#1081698">uses a double-tap on the Menu button for multiple selection</a>, then arbitrarily checks the bottom center photo to start. If you uncheck the photo as (not surprisingly) you may not want to do anything with it, Gallery exits multiple selection mode; instead, you have to check another photo before unchecking the bottom center one. In Gallery, the presence of a single selection is necessary to maintain multiple-selection mode; the iPhone’s ubiquitous “Edit” toggle button doesn’t have this problem.</p>
<p>So after six months, my situation is much the same: wait for a future Android device or a future iPhone. I doubt Palm is going to produce a device with the capabilities I want any time soon. Palm’s application ecosystem is much smaller than even Android, so it’s right out.</p>
<p>(I have a much longer Android post in preparation&#8230;if the above doesn’t make sense in places, let me know so I can clarify.)
</p>
]]></content:encoded>
			<wfw:commentRss>http://njr.sabi.net/2010/01/05/android-thoughts/feed/</wfw:commentRss>
		</item>
		<item>
		<title>NCIDpop 0.9.15 released</title>
		<link>http://njr.sabi.net/2009/06/16/ncidpop-0915-released/</link>
		<comments>http://njr.sabi.net/2009/06/16/ncidpop-0915-released/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 19:33:18 +0000</pubDate>
		<dc:creator>Nicholas Riley</dc:creator>
		
		<category>Computing</category>

		<category>Mac OS X</category>

		<guid isPermaLink="false">http://njr.sabi.net/2009/06/16/ncidpop-0915-released/</guid>
		<description><![CDATA[Last year I worked on NCIDpop, a network caller ID client originally written by Alexei Kosut. I recently spent a day or so doing some further hacking on NCIDpop to fix problems I and others had noticed. My changes have now been incorporated in an official release.
What&#8217;s new:

Address Book reverse lookup support: NCIDpop will display [...]]]></description>
			<content:encoded><![CDATA[<p>Last year I <a href="http://njr.sabi.net/2009/01/02/ncidpop-0914/">worked on</a> NCIDpop, a network caller ID client originally <a href="http://akosut.com/software/ncidpop.html">written by Alexei Kosut</a>. I recently spent a day or so doing some further hacking on NCIDpop to fix problems I and others had noticed. My changes have now been incorporated in <a href="http://ncid.sourceforge.net/ncidpop/ncidpop.html">an official release</a>.</p>
<p>What&#8217;s new:</p>
<ul>
<li>Address Book reverse lookup support: NCIDpop will display the caller&#8217;s name, phone number label (e.g., &#8220;mobile&#8221;) and picture instead of the caller ID if the information is available in the Mac OS X address book. Also, when you double-click a caller entry in the call log, it&#8217;ll open the corresponding Address Book card rather than doing a reverse lookup.
</li>
<li>Don&#8217;t reformat non-numeric 10-digit numbers (e.g., turning Vonage&#8217;s <tt>click2call</tt> into <tt>(cli) ck2-call</tt>).
</li>
<li>A few small memory leak fixes, thanks to the <a href="http://clang-analyzer.llvm.org/">Clang Static Analyzer</a>.
</li>
<li>Updated reverse lookup URL list (some providers had consolidated or changed their URL format).
</li>
<li>Bug fix: handle NCID servers specified by IP address instead of hostname.
</li>
<li>Bug fix: properly reconnect to the NCID server on wireless network changes (<a href="http://developer.apple.com/documentation/networking/Reference/SysConfig/SCNetwork/CompositePage.html#//apple_ref/c/tag/SCNetworkConnectionFlags">SCNetworkReachability</a> behavior is…interesting, and I had only tested 0.9.14 with wired networks).
</li>
</ul>
<p>Once again, if you&#8217;re wondering “why use NCID when I already have caller ID?” If you have SIP service (e.g., Vonage) at home, NCID/NCIDpop gives you caller ID on the first ring on every computer display in the place, which can save a lot of unnecessary running around to try to find the phone.</p>
<p>Of course, it&#8217;s just in time for me to consider giving up phone service at home as I&#8217;ll be spending much less time there in the fall.  I&#8217;m overdue for a new mobile phone, but I can&#8217;t decide between an iPhone 3G S, the Palm Pre or perhaps waiting for a future Android device.  I haven&#8217;t played with the Palm Pre yet; that&#8217;s on my schedule for next week.</p>
<p>Also: <a href="http://jython.org/">Jython 2.5 (final) was released today!</a> It&#8217;s been a long while coming. We&#8217;ve still got a lot of work to do, particularly on performance and Java integration.
</p>
]]></content:encoded>
			<wfw:commentRss>http://njr.sabi.net/2009/06/16/ncidpop-0915-released/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Maintaining Kerberos and AFS credentials in Screen</title>
		<link>http://njr.sabi.net/2009/05/19/renewing-a-screen-session-with-kerberos-afs/</link>
		<comments>http://njr.sabi.net/2009/05/19/renewing-a-screen-session-with-kerberos-afs/#comments</comments>
		<pubDate>Wed, 20 May 2009 03:22:01 +0000</pubDate>
		<dc:creator>Nicholas Riley</dc:creator>
		
		<category>Computing</category>

		<guid isPermaLink="false">http://njr.sabi.net/2009/05/19/renewing-a-screen-session-with-kerberos-afs/</guid>
		<description><![CDATA[If you use a persistent screen session on a machine running OpenAFS, you&#8217;ve likely experienced long delays and confusion when your tickets and tokens expire.
The Screen and Kerberos patches will create a credentials cache for your screen session and automatically renew tickets. That&#8217;s a start, but your tokens still expire.
A relatively simple modification simply runs [...]]]></description>
			<content:encoded><![CDATA[<p>If you use a persistent <tt>screen</tt> session on a machine running OpenAFS, you&#8217;ve likely experienced long delays and confusion when your tickets and tokens expire.</p>
<p>The <a href="http://www.dolda2000.com/~fredrik/patches/">Screen and Kerberos patches</a> will create a credentials cache for your <tt>screen</tt> session and automatically renew tickets. That&#8217;s a start, but your tokens still expire.</p>
<p>A relatively simple modification simply runs <tt>aklog</tt> after renewing your tickets.  The patch for this is <a href="http://web.sabi.net/nriley/software/screen-afs-support.patch">here</a>; Debian packages for <tt>acm-screen</tt>, incorporating Kerberos and AFS patches, are <a href="http://www.acm.uiuc.edu/admin/mirrors/acm/debian/dists/lenny/">here</a>.</p>
<p>However, this still leaves a problem when your tickets exceed their renewable lifetime. For that, I wrote a <tt>zsh</tt> function which wraps <tt>screen</tt> and re-<tt>kinit</tt>/<tt>aklog</tt>s if there is less than a day remaining before they expire for good.</p>
<pre class="code">
screen() {
  # note: this breaks if you have &gt;1 screen session
  cc=(/tmp/krb5cc_scr_$(id -u)_*(N[1]))
  [[ -n $cc ]] &#038;&#038; (( ${#@} )) &#038;&#038; {
    local princ=$(klist -5 $cc | awk '/Default principal:/ { print $3 }')
    [[ -n $princ ]] &#038;&#038; {
      local expiry
      zmodload zsh/datetime
      strftime -r -s expiry '%D %X' \
        "$(klist -5 $cc | awk '/krbtgt/ { getline ; print $3 " " $4 ; exit }')"
      (( expiry - EPOCHSECONDS &lt; 86400 )) &#038;&#038; {
        kinit -r7d -c $cc $princ &#038;&#038; screen -X screen aklog || return 1
      }
    }
  }
  =screen $@
}
</pre>
<p>Enjoy.
</p>
]]></content:encoded>
			<wfw:commentRss>http://njr.sabi.net/2009/05/19/renewing-a-screen-session-with-kerberos-afs/feed/</wfw:commentRss>
		</item>
		<item>
		<title>ICeCoffEE 1.5b5 released</title>
		<link>http://njr.sabi.net/2009/02/24/icecoffee-15b5/</link>
		<comments>http://njr.sabi.net/2009/02/24/icecoffee-15b5/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 19:49:18 +0000</pubDate>
		<dc:creator>Nicholas Riley</dc:creator>
		
		<category>Computing</category>

		<category>Mac OS X</category>

		<guid isPermaLink="false">http://njr.sabi.net/2009/02/24/icecoffee-15b5/</guid>
		<description><![CDATA[ICeCoffEE 1.5b5 is out. The only remaining known bug I plan to fix before 1.5 final relates to disabling localized services.

This version includes bug fixes and compatibility updates (particularly for Safari 4 Beta), as well as no longer doing anything if you &#8984;-click outside text on a Web page in WebKit/Safari.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://web.sabi.net/nriley/software/#icecoffee">ICeCoffEE 1.5b5</a> is out. The only remaining known bug I plan to fix before 1.5 final relates to <a href="http://njr.sabi.net/2007/06/19/internationalization-services-and-icecoffee/">disabling localized services</a>.</p>
<p>
This version includes bug fixes and compatibility updates (particularly for Safari 4 Beta), as well as no longer doing anything if you &#8984;-click outside text on a Web page in WebKit/Safari.</p>
]]></content:encoded>
			<wfw:commentRss>http://njr.sabi.net/2009/02/24/icecoffee-15b5/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

