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

<channel>
	<title>Abe Fettig&#039;s Blog</title>
	<atom:link href="http://fettig.net/weblog/feed/" rel="self" type="application/rss+xml" />
	<link>http://fettig.net/weblog</link>
	<description>Updates on Abe&#039;s projects</description>
	<lastBuildDate>Tue, 25 May 2010 22:10:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>New mini-project: Rich Text Input</title>
		<link>http://fettig.net/weblog/2010/05/25/rich-text-input/</link>
		<comments>http://fettig.net/weblog/2010/05/25/rich-text-input/#comments</comments>
		<pubDate>Tue, 25 May 2010 22:10:12 +0000</pubDate>
		<dc:creator>Abe</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://fettig.net/weblog/?p=291</guid>
		<description><![CDATA[
You know what always makes me feel a little nervous? Submitting text for processing.
Take this little example, for instance:

$ for file in *.txt; do mv $file "$file.old"; done;


If I&#8217;m typing that at a command line, my expectations that I&#8217;ve typed it exactly right the first time are pretty low. In fact, just now I had... <small><a href="http://fettig.net/weblog/2010/05/25/rich-text-input/">[more]</a></small>]]></description>
			<content:encoded><![CDATA[<p>
You know what always makes me feel a little nervous? Submitting text for processing.</p>
<p><p>Take this little example, for instance:</p>
<pre>
$ for file in *.txt; do mv $file "$file.old"; done;
</pre>
<p>
If I&#8217;m typing that at a command line, my expectations that I&#8217;ve typed it exactly right the first time are pretty low. In fact, just now I had to try a couple times before I got everything right for that example (I forgot the &#8220;do&#8221; the first time, and then I had &#8220;for $file&#8221;). So just before I hit enter I always have a feeling of hope mixed with fear: I hope that I got it right, but I&#8217;m prepared to see a disappointing error message and have to try editing my input again before submitting.
</p>
<p>Here&#8217;s another example:</p>
<p>
Phone number:<br />
<input type="text" name="phone" value="(207) 555-1234" /></p>
<p>
Is that going to work when I submit the form? Maybe, but I&#8217;ve also had plenty of times when a form gave me an error message because I didn&#8217;t format the phone number right. So I&#8217;m not completely confident that my input is going to be accepted, even though it&#8217;s just a phone number.
</p>
<p>
Fortunately there&#8217;s a well known solution to this kind of problem: WYSIWYG. In a WYSIWYG interface, What You See Is What You Get. In other words, the input interface shows you what the output is going to be. So when you hit print in Word, you&#8217;re not crossing your fingers that your printout is going to have the right words in italics. You know those words are going to be italicized because Word is displaying them in italics right on your screen. WYSIWYG gives the user assurance that their input has been understood.
</p>
<p>
Unfortunately, web forms are usually not WYSIWYG. You&#8217;re typing into an input box and hoping that you&#8217;re not going to get any error messages after you hit submit. This is an unpleasant experience. A lot of web apps could be improved if the input provided feedback as you typed. Today, programmers might try to do some of this by showing error messages next to the input box in real time, or by making a custom UI control. But to me the ideal thing would be to have a nice text input box where I can use native keyboard shortcuts, copy and paste, and tab around, while still being able to have a visual indication that my input is (or isn&#8217;t) being understood.
</p>
<p>
So to make that possible I just started a new mini-project, which I&#8217;m calling <a href="http://fettig.net/projects/richtextinput/">Rich Text Input</a>.
</p>
<p>
The goal of Rich Text Input is to provide an enhanced text input box that uses HTML formatting to give feedback about how the user&#8217;s input is going to be interpreted. It&#8217;s not a rich text editor &#8211; the output is still plain text, and behind the scenes the user&#8217;s input is still going to a regular &lt;input&gt; element. The purpose of the rich text formatting is to give the user feedback, and give them confidence that their input is going to be understood as intended.</p>
<p>
Here are some possible uses:</p>
<ul>
<li>syntax highlighting code snippets</li>
<li>validating credit card numbers, phone numbers, and zip codes</li>
<li>styling email addresses and tags</li>
</ul>
<p>If you wrote some code to round-trip the input to the server (like search engine auto-suggest inputs do today), you could do some even more interesting things:</p>
<ul>
<li>a tag list in which the color of the tags represents how &#8220;hot&#8221; they are</li>
<li>a search engine input where special operators like site:fettig.net are highlighted in a different color</li>
</ul>
<p>
The current code is not at all ready for production. But it demonstrates the concept, and I hope to have it ready for production projects soon. So check it out and let me know what you think of the idea. The project page is <a href="http://fettig.net/projects/richtextinput/">here</a>, and the code is <a href="http://github.com/abram/richtextinput">on GitHub</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://fettig.net/weblog/2010/05/25/rich-text-input/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;m a Free Agent</title>
		<link>http://fettig.net/weblog/2010/04/19/im-a-free-agent/</link>
		<comments>http://fettig.net/weblog/2010/04/19/im-a-free-agent/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 17:21:13 +0000</pubDate>
		<dc:creator>Abe</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://fettig.net/weblog/?p=281</guid>
		<description><![CDATA[
As of last week I&#8217;m no longer working for Google. I&#8217;m on my own, and I&#8217;m excited about it.


Being at Google was a great experience, and I&#8217;m grateful for it. I learned a lot, got to work with some great people, and enjoyed the feeling of being smack-dab in the center of the tech industry.... <small><a href="http://fettig.net/weblog/2010/04/19/im-a-free-agent/">[more]</a></small>]]></description>
			<content:encoded><![CDATA[<p>
As of last week I&#8217;m no longer working for Google. I&#8217;m on my own, and I&#8217;m excited about it.
</p>
<p>
Being at Google was a great experience, and I&#8217;m grateful for it. I learned a lot, got to work with some great people, and enjoyed the feeling of being smack-dab in the center of the tech industry. But after three and a half years I was itching to have more time to experiment and work on my own projects. So I decided it was time to move on.
</p>
<p>
Over the next few months I&#8217;m going to work on a couple of ideas for products I&#8217;ve been thinking about. I&#8217;m looking forward to doing some full-stack web development again. There&#8217;s also a bunch of interesting technologies that I want to get up to speed on, including html5, <a href="http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html">MobileSafari touch events</a>, geolocation, <a href="http://nodejs.org/">node.js</a>, <a href="http://code.google.com/p/redis/">Redis</a> and other NoSQL databases, and more.
</p>
<p>
I&#8217;m also considering taking on some contract work. For the past 5 years I&#8217;ve been doing lots of serious Javascript programming, and from talking to people it sounds like experienced Javascript experts are hard to find. So if you need outside help on a Javascript-intensive web application, feel free to check out <a href="http://fettig.net/resume/">my resume</a> and get in touch.
</p>
<p>
I&#8217;m really looking forward to this next phase of my career. Exciting times. Stay tuned.</p>
]]></content:encoded>
			<wfw:commentRss>http://fettig.net/weblog/2010/04/19/im-a-free-agent/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Nexus One total cost of ownership</title>
		<link>http://fettig.net/weblog/2010/01/05/nexus-one-total-cost-of-ownership/</link>
		<comments>http://fettig.net/weblog/2010/01/05/nexus-one-total-cost-of-ownership/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 23:11:54 +0000</pubDate>
		<dc:creator>Abe</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://fettig.net/weblog/?p=276</guid>
		<description><![CDATA[I think the Nexus One is a great mobile device (as a Google employee I got one at the end of December and I&#8217;ve been using it as my full time phone ever since). It was officially announced today, but in all the coverage I haven&#8217;t seen anybody talking about what a good deal it... <small><a href="http://fettig.net/weblog/2010/01/05/nexus-one-total-cost-of-ownership/">[more]</a></small>]]></description>
			<content:encoded><![CDATA[<p>I think the Nexus One is a great mobile device (as a Google employee I got one at the end of December and I&#8217;ve been using it as my full time phone ever since). It was officially announced today, but in all the coverage I haven&#8217;t seen anybody talking about what a good deal it is in terms of total cost of ownership if you buy the phone without service.</p>
<p>Here&#8217;s a breakdown of the total cost of ownership in both cases. The subsidized Nexus One costs $179, with a $79/month plan. The phone without service costs $529, $350 more. But then you can sign up for T-Mobile&#8217;s &#8220;<a href="http://www.t-mobile.com/shop/Plans/Cell-Phone-Plans.aspx?catgroup=EvenMorePlus">Even More Plus</a>&#8221; plan, and get the same 500 minutes + unlimited data and text messages or $59/month ($20 cheaper).</p>
<p>So, over 24 months you save $480 in service charges, more than making up for your extra $350 investment up front ($130 net savings). Plus you&#8217;re contract free and in position to sell your Nexus One on EBay and/or jump ship to another carrier when a newer, shinier phone comes along.</p>
<p>The savings are so substantial that you&#8217;d even come out ahead if you put the $350 extra on your credit card at 20% interest and put the $20 a month savings towards your credit card bill (you&#8217;d have the $350 balance paid off after just 21 months). To put it another way, if you go for the subsidized plan it&#8217;s like you&#8217;re borrowing $350 from T-Mobile, and then paying it back over 24 months at a roughly 30% interest rate.</p>
<p>One last comparison, total cost of ownership numbers over 24 months:</p>
<p>Nexus One (no plan) + T-Mobile Even More Plus (unlimited text messages, 500 minutes): $<strong>1969</strong><br />
Nexus One with bundles T-Mobile plan (unlimited text messages, 500 minutes): $<strong>2099</strong><br />
iPhone with AT&amp;T iPhone plan (choice of 200, 1500, or unlimited text messages, 450 minutes): $<strong>2000</strong> / $<strong>2240</strong> / $<strong>2360</strong> (depending on text messaging plan)</p>
<p><strong>Update</strong>: billshrink.com has a <a href="http://www.billshrink.com/blog/nexus-one-vs-iphone-droid-palm-pre-total-cost-of-ownership/">chart comparing total cost of ownership of various smart phones, including the Nexus One</a>, but they don&#8217;t seem to be using the Even More Plus plan prices.</p>
]]></content:encoded>
			<wfw:commentRss>http://fettig.net/weblog/2010/01/05/nexus-one-total-cost-of-ownership/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubiquity</title>
		<link>http://fettig.net/weblog/2008/08/27/ubiquity/</link>
		<comments>http://fettig.net/weblog/2008/08/27/ubiquity/#comments</comments>
		<pubDate>Wed, 27 Aug 2008 22:53:25 +0000</pubDate>
		<dc:creator>Abe</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://fettig.net/weblog/2008/08/27/ubiquity/</guid>
		<description><![CDATA[
This afternoon I spent a little time playing with Aza Raskin&#8217;s new mega-meta-extension for Firefox, Ubiquity. (If you&#8217;re not up to speed on Ubiquity yet, imagine bookmarklets, extended with power similar to Greasemonkey (including the ability to control your entire browser window) and controlled with a lovely command line interface in the model of enso/Quicksilver).... <small><a href="http://fettig.net/weblog/2008/08/27/ubiquity/">[more]</a></small>]]></description>
			<content:encoded><![CDATA[<p>
This afternoon I spent a little time playing with Aza Raskin&#8217;s new mega-meta-extension for Firefox, <a href="https://wiki.mozilla.org/Labs/Ubiquity">Ubiquity</a>. (If you&#8217;re not up to speed on Ubiquity yet, imagine <a href="http://en.wikipedia.org/wiki/Bookmarklet">bookmarklets</a>, extended with power similar to <a href="https://addons.mozilla.org/en-US/firefox/addon/748">Greasemonkey</a> (including the ability to control your entire browser window) and controlled with a lovely command line interface in the model of <a href="http://humanized.com/enso/">enso</a>/<a href="http://docs.blacktree.com/quicksilver/what_is_quicksilver">Quicksilver</a>). Unsurprisingly, I love it. Ubiquity makes the web more scriptable then ever before, and the current implementation combines several of my favorite interesting UI ideas (context sensitivity, command lines, and hidden UIs that spring into view when you need them).
</p>
<p>
As a learning exercise I wrote my first command, <strong>status-in-gmail</strong>, which you can subscribe to on this <a href="/playground/ubiquity/">Ubiquity Commands page</a>. The status-in-gmail command will update your Google Talk status message in any Gmail tabs you currently have open. You can supply an arbitrary string for your status message, or have it use the selected text on the current page.
</p>
<p>
I chose this for my first command because I&#8217;d written a similar command for Quicksilver and Adium a while ago using AppleScript, and I&#8217;ve missed it since I switched to using web-based chat in Gmail. The Ubiquity side of things was really easy to implement &#8211; they&#8217;ve done a great job providing simple APIs. The only hard part was figuring out how to script Gmail to do what I wanted.
</p>
<p>
The current code is alpha, of course, and still has some limitations &#8211; you can only change your status message, not your available/busy status, and it will throw an error if you try to use it without being signed into chat. But feel free to give it a try and let me know what you think.
</p>
<p>
Now, who&#8217;s going to write the first Quicksilver-to-Ubiquity bridge? :)</p>
]]></content:encoded>
			<wfw:commentRss>http://fettig.net/weblog/2008/08/27/ubiquity/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iPhone sync problem and solution</title>
		<link>http://fettig.net/weblog/2008/02/18/iphone-sync-problem-and-solution/</link>
		<comments>http://fettig.net/weblog/2008/02/18/iphone-sync-problem-and-solution/#comments</comments>
		<pubDate>Tue, 19 Feb 2008 04:30:32 +0000</pubDate>
		<dc:creator>Abe</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://fettig.net/weblog/2008/02/18/iphone-sync-problem-and-solution/</guid>
		<description><![CDATA[
A few days ago my iPhone stopped syncing correctly. When I tried to sync I would get a message that contact syncing had failed because &#8220;the sync server failed to sync the iphone&#8221;. If I disabled contact syncing, calendar synching would fail with the same error message, and if I disabled calendar syncing too, bookmarking... <small><a href="http://fettig.net/weblog/2008/02/18/iphone-sync-problem-and-solution/">[more]</a></small>]]></description>
			<content:encoded><![CDATA[<p>
A few days ago my iPhone stopped syncing correctly. When I tried to sync I would get a message that contact syncing had failed because &#8220;the sync server failed to sync the iphone&#8221;. If I disabled contact syncing, calendar synching would fail with the same error message, and if I disabled calendar syncing too, bookmarking synching would fail. I found a few people talking about the problem, but none of the suggested solutions (including restoring my iPhone) worked for me.
</p>
<p>
Finally I came across a weblog entry that mentioned looking at the console to see the sync log. I opened /Applications/Console and saw this message:</p>
<blockquote><p>
<code><br />
2008-02-18 22:57:38.111 AppleMobileSync[652] CFLog (0):<br />
	CFPropertyListCreateFromXMLData(): plist parse failed; the data is not proper UTF-8. The file name for this data could be:<br />
	/Users/abe/Library/Application Support/SyncServices/Local/clientdata/[really long numerical directory]/[really long numerical file name]<br />
</code>
</p></blockquote>
<p>
Apparently that file with the really long name was causing the problem. So I went ahead and moved it out of the way (I put it on my desktop so I could restore it if it turned out to be important). Then I tried to sync again&#8230; and it worked! I did get a couple of messages about resolving sync conflicts, but they were easily resolved and now everything appears to be working fine.
</p>
<p>
Take this for what it&#8217;s worth; I don&#8217;t know if this will work for you, or make matters worse. I have no idea what that file was supposed to do, and randomly removing application files from your computer is generally a bad idea. But if you&#8217;ve got a similar iPhone syncing problem, and nothing else works, you might want to check your Console log and see if there&#8217;s a similar file causing your problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://fettig.net/weblog/2008/02/18/iphone-sync-problem-and-solution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
