<?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>Michael Tsai</title>
	<atom:link href="http://mjtsai.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://mjtsai.com/blog</link>
	<description></description>
	<lastBuildDate>Tue, 21 May 2013 16:21:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Shorter Dropbox Public URLs</title>
		<link>http://mjtsai.com/blog/2013/05/21/shorter-dropbox-public-urls/</link>
		<comments>http://mjtsai.com/blog/2013/05/21/shorter-dropbox-public-urls/#comments</comments>
		<pubDate>Tue, 21 May 2013 16:21:08 +0000</pubDate>
		<dc:creator>Michael Tsai</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[dropbox]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://mjtsai.com/blog/?p=7450</guid>
		<description><![CDATA[Matt Henderson shows how to use a custom subdomain to clean up the long dl.dropboxusercontent.com URLs.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.dafacto.com/2013/05/21/using-a-custom-domain-for-your-dropbox-public-files-urls/">Matt Henderson</a> shows how to use a custom subdomain to clean up the long dl.dropboxusercontent.com URLs.</p>]]></content:encoded>
			<wfw:commentRss>http://mjtsai.com/blog/2013/05/21/shorter-dropbox-public-urls/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Flickr</title>
		<link>http://mjtsai.com/blog/2013/05/21/new-flickr/</link>
		<comments>http://mjtsai.com/blog/2013/05/21/new-flickr/#comments</comments>
		<pubDate>Tue, 21 May 2013 16:17:25 +0000</pubDate>
		<dc:creator>Michael Tsai</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[photography]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://mjtsai.com/blog/?p=7448</guid>
		<description><![CDATA[Flickr: We want Flickr to be the most amazing community and place for you to share your photos. So, we&#8217;re also revealing a beautiful new design that puts photos at the heart of your Flickr experience, where they should always be. Whether it&#8217;s a sweeping landscape or a family portrait, we want every photo to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.flickr.net/en/2013/05/20/a-better-brighter-flickr/">Flickr</a>:</p>
<blockquote cite="http://blog.flickr.net/en/2013/05/20/a-better-brighter-flickr/"><p>We want Flickr to be the most amazing community and place for you to share your photos. So, we&rsquo;re also revealing a beautiful new design that puts photos at the heart of your Flickr experience, where they should always be. Whether it&rsquo;s a sweeping landscape or a family portrait, we want every photo to be at its most spectacular.</p></blockquote>
<p>I think they went a bit too far, in that no matter how large your window you can no longer simultaneously view an individual photo and its metadata. But I like the general direction.</p>
<p>I was happy paying about $22/year for unlimited uploads and no ads. Now that the <a href="http://www.flickr.com/help/limits/">free account</a> includes 1 TB of storage, removing the ads for $50/year doesn&rsquo;t seem like a good deal.</p>]]></content:encoded>
			<wfw:commentRss>http://mjtsai.com/blog/2013/05/21/new-flickr/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iTunes 11.0.3 MiniPlayer</title>
		<link>http://mjtsai.com/blog/2013/05/20/itunes-11-0-3-miniplayer/</link>
		<comments>http://mjtsai.com/blog/2013/05/20/itunes-11-0-3-miniplayer/#comments</comments>
		<pubDate>Mon, 20 May 2013 18:15:52 +0000</pubDate>
		<dc:creator>Michael Tsai</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[itunes]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[macapp]]></category>

		<guid isPermaLink="false">http://mjtsai.com/blog/?p=7446</guid>
		<description><![CDATA[Kirk McElhearn: Apple released a minor update to iTunes last week (11.0.3), with, uncommonly, tweaks to a couple of features that are very welcome. The first I want to point out is the MiniPlayer[&#8230;]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mcelhearn.com/2013/05/20/latest-itunes-update-gets-miniplayer-right/">Kirk McElhearn</a>:</p>
<blockquote cite="http://www.mcelhearn.com/2013/05/20/latest-itunes-update-gets-miniplayer-right/"><p>Apple released a minor update to iTunes last week (11.0.3), with, uncommonly, tweaks to a couple of features that are very welcome. The first I want to point out is the MiniPlayer[&#8230;]</p></blockquote>]]></content:encoded>
			<wfw:commentRss>http://mjtsai.com/blog/2013/05/20/itunes-11-0-3-miniplayer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Tumblr Architecture</title>
		<link>http://mjtsai.com/blog/2013/05/20/the-tumblr-architecture/</link>
		<comments>http://mjtsai.com/blog/2013/05/20/the-tumblr-architecture/#comments</comments>
		<pubDate>Mon, 20 May 2013 18:13:01 +0000</pubDate>
		<dc:creator>Michael Tsai</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[tumblr]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://mjtsai.com/blog/?p=7444</guid>
		<description><![CDATA[Todd Hoff: Tumblr started as a fairly typical large LAMP application. The direction they are moving in now is towards a distributed services model built around Scala, HBase, Redis, Kafka, Finagle, and an intriguing cell based architecture for powering their Dashboard. Effort is now going into fixing short term problems in their PHP application, pulling [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://highscalability.com/blog/2013/5/20/the-tumblr-architecture-yahoo-bought-for-a-cool-billion-doll.html">Todd Hoff</a>:</p>
<blockquote cite="http://highscalability.com/blog/2013/5/20/the-tumblr-architecture-yahoo-bought-for-a-cool-billion-doll.html"><p>Tumblr started as a fairly typical large LAMP application. The direction they are moving in now is towards a distributed services model built around Scala, HBase, Redis, Kafka, Finagle,  and an intriguing cell based architecture for powering their Dashboard. Effort is now going into fixing short term problems in their PHP application, pulling things out, and doing it right using services.</p></blockquote>]]></content:encoded>
			<wfw:commentRss>http://mjtsai.com/blog/2013/05/20/the-tumblr-architecture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Know When Apple Finally Gets iCloud Right</title>
		<link>http://mjtsai.com/blog/2013/05/20/when-apple-gets-icloud-right/</link>
		<comments>http://mjtsai.com/blog/2013/05/20/when-apple-gets-icloud-right/#comments</comments>
		<pubDate>Mon, 20 May 2013 18:12:59 +0000</pubDate>
		<dc:creator>Michael Tsai</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[coredata]]></category>
		<category><![CDATA[icloud]]></category>
		<category><![CDATA[syncing]]></category>

		<guid isPermaLink="false">http://mjtsai.com/blog/?p=7442</guid>
		<description><![CDATA[Gus Mueller:Start with an assumption that it's going to break, and break hard. Give developers tools to analyze and clean things up. Apple gives us pretty great tools for debugging and improving code running on our local machines. We need the server side equivalent of that.]]></description>
			<content:encoded><![CDATA[<p><a href="http://shapeof.com/archives/2013/5/how_to_know_when_apple_finally_gets_icloud_right.html">Gus Mueller</a>:</p><blockquote cite="http://shapeof.com/archives/2013/5/how_to_know_when_apple_finally_gets_icloud_right.html"><p>Start with an assumption that it's going to break, and break hard. Give developers tools to analyze and clean things up. Apple gives us pretty great tools for debugging and improving code running on our local machines. We need the server side equivalent of that.</p></blockquote>]]></content:encoded>
			<wfw:commentRss>http://mjtsai.com/blog/2013/05/20/when-apple-gets-icloud-right/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>E-Book Price-Fixing Lawsuit</title>
		<link>http://mjtsai.com/blog/2013/05/15/e-book-price-fixing-lawsuit/</link>
		<comments>http://mjtsai.com/blog/2013/05/15/e-book-price-fixing-lawsuit/#comments</comments>
		<pubDate>Thu, 16 May 2013 03:00:28 +0000</pubDate>
		<dc:creator>Michael Tsai</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[appstore]]></category>
		<category><![CDATA[ebooks]]></category>
		<category><![CDATA[legal]]></category>

		<guid isPermaLink="false">http://mjtsai.com/blog/?p=7440</guid>
		<description><![CDATA[The New York Times (via John Gruber): After Random House finally agreed to a contract on Jan. 18, 2011, Eddy Cue, the Apple executive in charge of its e-books deals, sent an e-mail to Mr. Jobs attributing the publisher&#8217;s capitulation, in part, to &#8220;the fact that I prevented an app from Random House from going [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nytimes.com/2013/05/15/technology/us-now-paints-apple-as-ringmaster-in-its-lawsuit-on-e-book-price-fixing.html?pagewanted=all&#038;_r=1&#038;">The New York Times</a> (via <a href="http://daringfireball.net/linked/2013/05/15/nyt-ebooks">John Gruber</a>):</p>
<blockquote cite="http://www.nytimes.com/2013/05/15/technology/us-now-paints-apple-as-ringmaster-in-its-lawsuit-on-e-book-price-fixing.html?pagewanted=all&#038;_r=1&#038;"><p>After Random House finally agreed to a contract on Jan. 18, 2011, Eddy Cue, the Apple executive in charge of its e-books deals, sent an e-mail to Mr. Jobs attributing the publisher&rsquo;s capitulation, in part, to &ldquo;the fact that I prevented an app from Random House from going live in the app store,&rdquo; the filing reads.</p></blockquote>]]></content:encoded>
			<wfw:commentRss>http://mjtsai.com/blog/2013/05/15/e-book-price-fixing-lawsuit/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dictionary of Numbers</title>
		<link>http://mjtsai.com/blog/2013/05/15/dictionary-of-numbers/</link>
		<comments>http://mjtsai.com/blog/2013/05/15/dictionary-of-numbers/#comments</comments>
		<pubDate>Wed, 15 May 2013 20:08:23 +0000</pubDate>
		<dc:creator>Michael Tsai</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[googlechrome]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://mjtsai.com/blog/?p=7437</guid>
		<description><![CDATA[Glen Chiacchieri (via Randall Munroe):Dictionary of Numbers is an award-winning Google Chrome extension that tries to make sense of numbers you encounter on the web by giving you a description of that number in human terms. Because &#8220;8 million people&#8221; means nothing, but &#8220;population of New York City&#8221; means everything.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.dictionaryofnumbers.com">Glen Chiacchieri</a> (via <a href="http://blog.xkcd.com/2013/05/15/dictionary-of-numbers/">Randall Munroe</a>):</p><blockquote cite="http://www.dictionaryofnumbers.com"><p>Dictionary of Numbers is an award-winning Google Chrome extension that tries to make sense of numbers you encounter on the web by giving you a description of that number in human terms. Because &ldquo;8 million people&rdquo; means nothing, but &ldquo;population of New York City&rdquo; means everything.</p></blockquote>]]></content:encoded>
			<wfw:commentRss>http://mjtsai.com/blog/2013/05/15/dictionary-of-numbers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ted&#8217;s iPad Setup</title>
		<link>http://mjtsai.com/blog/2013/05/15/teds-ipad-setup/</link>
		<comments>http://mjtsai.com/blog/2013/05/15/teds-ipad-setup/#comments</comments>
		<pubDate>Wed, 15 May 2013 20:01:47 +0000</pubDate>
		<dc:creator>Michael Tsai</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[appstore]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[iosapp]]></category>
		<category><![CDATA[ipad]]></category>

		<guid isPermaLink="false">http://mjtsai.com/blog/?p=7434</guid>
		<description><![CDATA[Ted Goranson sifts through iPad apps: I assumed that the experience with the iPhone would make the setup on the iPad easy. It helped not at all. I still bought easily five or six apps for each one I settled on. I am happy with Apple overall, but the app evaluation process is severely broken.]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.tedgoranson.com/personal/the_ipad_setup.html">Ted Goranson</a> sifts through iPad apps:</p>
<blockquote cite="http://blog.tedgoranson.com/personal/the_ipad_setup.html"><p>I assumed that the experience with the iPhone would make the setup on the iPad easy. It helped not at all. I still bought easily five or six apps for each one I settled on. I am happy with Apple overall, but the app evaluation process is severely broken.</p></blockquote>]]></content:encoded>
			<wfw:commentRss>http://mjtsai.com/blog/2013/05/15/teds-ipad-setup/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Xcode Damages Nested Executables During Mac App Store Submission</title>
		<link>http://mjtsai.com/blog/2013/05/15/xcode-damages-nested-executables-during-mac-app-store-submission/</link>
		<comments>http://mjtsai.com/blog/2013/05/15/xcode-damages-nested-executables-during-mac-app-store-submission/#comments</comments>
		<pubDate>Wed, 15 May 2013 19:29:18 +0000</pubDate>
		<dc:creator>Michael Tsai</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[macappstore]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[sandboxing]]></category>
		<category><![CDATA[xcode]]></category>

		<guid isPermaLink="false">http://mjtsai.com/blog/?p=7432</guid>
		<description><![CDATA[Peter Maurer: After the app passes validation and Xcode uploads it successfully, the upload is ultimately rejected based on the incorrect assertion that sandboxing is not enabled for the nested executable.]]></description>
			<content:encoded><![CDATA[<p><a href="http://openradar.appspot.com/13897215">Peter Maurer</a>:</p>
<blockquote cite="http://openradar.appspot.com/13897215"><p>After the app passes validation and Xcode uploads it successfully, the upload is ultimately rejected based on the incorrect assertion that sandboxing is not enabled for the nested executable.</p></blockquote>]]></content:encoded>
			<wfw:commentRss>http://mjtsai.com/blog/2013/05/15/xcode-damages-nested-executables-during-mac-app-store-submission/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Apple&#8217;s New Objective-C-to-JavaScript Bridge in WebKit</title>
		<link>http://mjtsai.com/blog/2013/05/15/apples-new-objective-c-to-javascript-bridge-in-webkit/</link>
		<comments>http://mjtsai.com/blog/2013/05/15/apples-new-objective-c-to-javascript-bridge-in-webkit/#comments</comments>
		<pubDate>Wed, 15 May 2013 19:24:06 +0000</pubDate>
		<dc:creator>Michael Tsai</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://mjtsai.com/blog/?p=7430</guid>
		<description><![CDATA[Nigel Brooke (via John Siracusa): A few month back, Apple quietly slipped a very nice Objective-C to Javascript bridge into WebKit. Since the first commit while we were busy celebrating New Year&#8217;s Eve, it has been fairly actively developed and improved. This new API supports straightforward embedding of the JavaScriptCore interpreter into native Objective-C projects, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.steamclock.com/blog/2013/05/apple-objective-c-javascript-bridge/">Nigel Brooke</a> (via <a href="https://twitter.com/siracusa/status/334702548348989440">John Siracusa</a>):</p>
<blockquote cite="http://www.steamclock.com/blog/2013/05/apple-objective-c-javascript-bridge/"><p>A few month back, Apple quietly slipped a very nice Objective-C to Javascript bridge into WebKit. Since the <a href="https://github.com/WebKit/webkit/commit/fc3818879aa31b219fb99880378ef947bbc1acc1">first commit while we were busy celebrating New Year&rsquo;s Eve</a>, it has been fairly actively developed and improved. This new API supports straightforward embedding of the JavaScriptCore interpreter into native Objective-C projects, including reading and writing variables and object members with appropriate type coercion, calling methods on JavaScript objects, and directly binding Objective-C objects into JavaScript.</p></blockquote>]]></content:encoded>
			<wfw:commentRss>http://mjtsai.com/blog/2013/05/15/apples-new-objective-c-to-javascript-bridge-in-webkit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How Apple Decrypts iPhones</title>
		<link>http://mjtsai.com/blog/2013/05/15/how-apple-decrypts-iphones/</link>
		<comments>http://mjtsai.com/blog/2013/05/15/how-apple-decrypts-iphones/#comments</comments>
		<pubDate>Wed, 15 May 2013 19:22:13 +0000</pubDate>
		<dc:creator>Michael Tsai</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://mjtsai.com/blog/?p=7428</guid>
		<description><![CDATA[Quinn Mahoney (via John Gruber): No, a signed ramdisk means the brute force is done on-device. The 10 attempt limit is enforced by iOS, ramdisk bypasses that.]]></description>
			<content:encoded><![CDATA[<p><a href="https://twitter.com/qmahoney/status/334370843503230976">Quinn Mahoney</a> (via <a href="http://daringfireball.net/linked/2013/05/14/iphone-encryption">John Gruber</a>):</p>
<blockquote cite="https://twitter.com/qmahoney/status/334370843503230976"><p>No, a signed ramdisk means the brute force is done on-device. The 10 attempt limit is enforced by iOS, ramdisk bypasses that.</p></blockquote>]]></content:encoded>
			<wfw:commentRss>http://mjtsai.com/blog/2013/05/15/how-apple-decrypts-iphones/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Terra Programming Language</title>
		<link>http://mjtsai.com/blog/2013/05/14/the-terra-programming-language/</link>
		<comments>http://mjtsai.com/blog/2013/05/14/the-terra-programming-language/#comments</comments>
		<pubDate>Tue, 14 May 2013 18:05:32 +0000</pubDate>
		<dc:creator>Michael Tsai</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[languagedesign]]></category>
		<category><![CDATA[lua]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[terra]]></category>

		<guid isPermaLink="false">http://mjtsai.com/blog/?p=7425</guid>
		<description><![CDATA[Terra (via Hacker News): Like C, Terra is a simple, statically-typed, compiled language with manual memory management. But unlike C, it is designed from the beginning to interoperate with Lua. Terra functions are first-class Lua values created using the terra keyword. When needed they are JIT-compiled to machine code. Zachary DeVito:You&#8217;re right that we designed [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://terralang.org">Terra</a> (via <a href="https://news.ycombinator.com/item?id=5702793">Hacker News</a>):</p>
<blockquote cite="http://terralang.org"><p>Like C, Terra is a simple, statically-typed, compiled language with manual memory management. But unlike C, it is designed from the beginning to interoperate with Lua. Terra functions are first-class Lua values created using the <code>terra</code> keyword. When needed they are JIT-compiled to machine code.</p></blockquote>
<p><a href="https://news.ycombinator.com/item?id=5703155">Zachary DeVito</a>:</p><blockquote cite="https://news.ycombinator.com/item?id=5703155"><p>You&rsquo;re right that we designed Terra primarily to be an enviornment for generate low-level code. In particular, we want to be able to easily design and prototype DSLs and auto-tuners for high-performance programming applications. We explain this use-case in more detail in our upcoming <a href="http://terralang.org/pldi071-devito.pdf">PLDI paper</a>.</p></blockquote>
<p>Update (2013-05-15): The <a href="http://lambda-the-ultimate.org/node/4739">Lambda thread</a>:</p>]]></content:encoded>
			<wfw:commentRss>http://mjtsai.com/blog/2013/05/14/the-terra-programming-language/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reversible Javascript</title>
		<link>http://mjtsai.com/blog/2013/05/13/reversible-javascript/</link>
		<comments>http://mjtsai.com/blog/2013/05/13/reversible-javascript/#comments</comments>
		<pubDate>Tue, 14 May 2013 02:48:56 +0000</pubDate>
		<dc:creator>Michael Tsai</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://mjtsai.com/blog/?p=7423</guid>
		<description><![CDATA[Will Thimbleby: A reversible interpreter provides some really interesting opportunities for exploration and learning programming. Reversibility makes it possible to scrub through the execution of algorithms, which you can see used to great effect in the Algorithm Wiki and in the depth-first traversal example below. The code that is highlighted on the left-hand side is [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://will.thimbleby.net/reversible-javascript/">Will Thimbleby</a>:</p>
<blockquote cite="http://will.thimbleby.net/reversible-javascript/"><p>A reversible interpreter provides some really interesting opportunities for exploration and learning programming. Reversibility makes it possible to scrub through the execution of algorithms, which you can see used to great effect in the <a href="http://will.thimbleby.net/algorithms">Algorithm Wiki</a> and in the depth-first traversal example below. The code that is highlighted on the left-hand side is the actual code that is running. Being able to scrub through the algorithm is not only fun, it transforms the experience of exploring the algorithm.</p></blockquote>]]></content:encoded>
			<wfw:commentRss>http://mjtsai.com/blog/2013/05/13/reversible-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cloud Mate</title>
		<link>http://mjtsai.com/blog/2013/05/13/cloud-mate/</link>
		<comments>http://mjtsai.com/blog/2013/05/13/cloud-mate/#comments</comments>
		<pubDate>Tue, 14 May 2013 02:47:26 +0000</pubDate>
		<dc:creator>Michael Tsai</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[cloudmate]]></category>
		<category><![CDATA[icloud]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[iosapp]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[macapp]]></category>
		<category><![CDATA[sandboxing]]></category>

		<guid isPermaLink="false">http://mjtsai.com/blog/?p=7421</guid>
		<description><![CDATA[Matt Neuburg: I have not yet explained how on earth Cloud Mate on iOS is able to show you a preview of the contents of an iCloud-based file, as well as handing that file off to various other apps and services. The answer is that Cloud Mate&#8217;s information about each cloud-based document includes not only [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://tidbits.com/article/13751">Matt Neuburg</a>:</p>
<blockquote cite="http://tidbits.com/article/13751"><p>I have not yet explained how on earth Cloud Mate on iOS is able to show you a preview of the contents of an iCloud-based file, as well as handing that file off to various other apps and services. The answer is that Cloud Mate&rsquo;s information about each cloud-based document includes not only its name, size, and modification date, but also the URL of its storage location at www.icloud.com. Thus, when you tap on the name of a document, Cloud Mate does effectively the same thing that Dropbox does when you tap on the name of a document in the Dropbox app &mdash; it downloads the document from iCloud!</p></blockquote>
<p>The iOS app is possible because the companion Mac app is not sandboxed.</p>]]></content:encoded>
			<wfw:commentRss>http://mjtsai.com/blog/2013/05/13/cloud-mate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>True-Color GIF Example</title>
		<link>http://mjtsai.com/blog/2013/05/11/true-color-gif-example/</link>
		<comments>http://mjtsai.com/blog/2013/05/11/true-color-gif-example/#comments</comments>
		<pubDate>Sun, 12 May 2013 02:46:34 +0000</pubDate>
		<dc:creator>Michael Tsai</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[gif]]></category>

		<guid isPermaLink="false">http://mjtsai.com/blog/?p=7415</guid>
		<description><![CDATA[phil.ipal.org (via Mathia Bynens): While using more than 256 colors in GIF is in most cases a bad practice, and should be limited to certain technical cases where extreme size can be tolerated, a statement that the GIF image file format is limited to 256 colors is simply false. DanBC: I took a screenshot so [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://phil.ipal.org/tc.html">phil.ipal.org</a> (via <a href="https://twitter.com/mathias/status/333274681094316032">Mathia Bynens</a>):</p>
<blockquote cite="http://phil.ipal.org/tc.html"><p>While using more than 256 colors in GIF is in most cases a bad practice, and should be limited to certain technical cases where extreme size can be tolerated, a statement that the GIF image file format is limited to 256 colors is simply false.</p></blockquote>
<p><a href="https://news.ycombinator.com/item?id=5692309">DanBC</a>:</p>
<blockquote cite="https://news.ycombinator.com/item?id=5692309"><p>I took <a href="http://i.imgur.com/DYbVSbj.png">a screenshot</a> so interested people can see how badly images can be mangled by the proxies used by some mobile companies.</p></blockquote>
<p><a href="https://news.ycombinator.com/item?id=5692104">buddydvd</a> says it&rsquo;s slow in Safari because:</p>
<blockquote cite="https://news.ycombinator.com/item?id=5692104"><p>It&rsquo;s actually more of a hack to deal with malformed GIFs and goes directly against spec. To address GIFs where each frame has a 0 frame delay, most GIF decoders implement a minimum frame delay value.</p></blockquote>]]></content:encoded>
			<wfw:commentRss>http://mjtsai.com/blog/2013/05/11/true-color-gif-example/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More In-Store iProduct Repairs</title>
		<link>http://mjtsai.com/blog/2013/05/11/more-in-store-iproduct-repairs/</link>
		<comments>http://mjtsai.com/blog/2013/05/11/more-in-store-iproduct-repairs/#comments</comments>
		<pubDate>Sat, 11 May 2013 18:12:05 +0000</pubDate>
		<dc:creator>Michael Tsai</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[hardware]]></category>

		<guid isPermaLink="false">http://mjtsai.com/blog/?p=7413</guid>
		<description><![CDATA[ifoAppleStore: The workload of Apple retail store Genius Bars is scheduled for a huge increase later this year, after the company introduces a revamped AppleCare product that includes a longer list of iPhone, iPad and iPod problems that will repaired in-house. The changes will reportedly save the company $1 billion a year, but could also [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ifoapplestore.com/2013/05/10/big-switch-more-in-store-i-product-repairs/">ifoAppleStore</a>:</p>
<blockquote cite="http://www.ifoapplestore.com/2013/05/10/big-switch-more-in-store-i-product-repairs/"><p>The workload of Apple retail store Genius Bars is scheduled for a huge increase later this year, after the company introduces a revamped AppleCare product that includes a longer list of iPhone, iPad and iPod problems that will repaired in-house. The changes will reportedly save the company $1 billion a year, but could also significantly lower customer satisfaction with time-consuming repairs, instead of being handled in five minutes with a swap-out.</p></blockquote>
<p>The current swap policy is nice for those of us who don&rsquo;t live near an Apple Store, but perhaps actual repairs will make addressing <a href="http://mjtsai.com/blog/2013/04/11/stuck-iphone-power-button/">common hardware problems</a> more affordable.</p>]]></content:encoded>
			<wfw:commentRss>http://mjtsai.com/blog/2013/05/11/more-in-store-iproduct-repairs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The CAP FAQ</title>
		<link>http://mjtsai.com/blog/2013/05/11/the-cap-faq/</link>
		<comments>http://mjtsai.com/blog/2013/05/11/the-cap-faq/#comments</comments>
		<pubDate>Sat, 11 May 2013 18:02:07 +0000</pubDate>
		<dc:creator>Michael Tsai</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[theory]]></category>

		<guid isPermaLink="false">http://mjtsai.com/blog/?p=7410</guid>
		<description><![CDATA[Henry Robinson (via Hacker News): No subject appears to be more controversial to distributed systems engineers than the oft-quoted, oft-misunderstood CAP theorem. The purpose of this FAQ is to explain what is known about CAP, so as to help those new to the theorem get up to speed quickly, and to settle some common misconceptions [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://henryr.github.io/cap-faq/">Henry Robinson</a> (via <a href="https://news.ycombinator.com/item?id=5684187">Hacker News</a>):</p>
<blockquote cite="http://henryr.github.io/cap-faq/"><p>No subject appears to be more controversial to distributed systems engineers than the oft-quoted, oft-misunderstood CAP theorem. The purpose of this FAQ is to explain what is known about CAP, so as to help those new to the theorem get up to speed quickly, and to settle some common misconceptions or points of disagreement.</p></blockquote>
<p>(Hat tip to my mentor Nancy Lynch, who proved the theorem.)</p>]]></content:encoded>
			<wfw:commentRss>http://mjtsai.com/blog/2013/05/11/the-cap-faq/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Kernel Performance</title>
		<link>http://mjtsai.com/blog/2013/05/11/windows-kernel-performance/</link>
		<comments>http://mjtsai.com/blog/2013/05/11/windows-kernel-performance/#comments</comments>
		<pubDate>Sat, 11 May 2013 17:45:30 +0000</pubDate>
		<dc:creator>Michael Tsai</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://mjtsai.com/blog/?p=7407</guid>
		<description><![CDATA[An anonymous Microsoft developer (via Romit Mehta): Windows is indeed slower than other operating systems in many scenarios, and the gap is worsening. The cause of the problem is social. There&#8217;s almost none of the improvement for its own sake, for the sake of glory, that you see in the Linux world. Granted, occasionally one [...]]]></description>
			<content:encoded><![CDATA[<p>An <a href="http://blog.zorinaq.com/?e=74">anonymous Microsoft developer</a> (via <a href="http://blog.zorinaq.com/?e=74">Romit Mehta</a>):</p>
<blockquote cite="http://blog.zorinaq.com/?e=74"><p>Windows is indeed slower than other operating systems in many scenarios, and the gap is worsening. The cause of the problem is social. There&rsquo;s almost none of the improvement for its own sake, for the sake of glory, that you see in the Linux world.</p>
<p>Granted, occasionally one sees naive people try to make things better. These people almost always fail. We can and do improve performance for specific scenarios that people with the ability to allocate resources believe impact business goals, but this work is Sisyphean. There&rsquo;s no formal or informal program of systemic performance improvement. We started caring about security because pre-SP3 Windows XP was an existential threat to the business.</p></blockquote>]]></content:encoded>
			<wfw:commentRss>http://mjtsai.com/blog/2013/05/11/windows-kernel-performance/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>UbiquityStoreManager</title>
		<link>http://mjtsai.com/blog/2013/05/11/ubiquitystoremanager/</link>
		<comments>http://mjtsai.com/blog/2013/05/11/ubiquitystoremanager/#comments</comments>
		<pubDate>Sat, 11 May 2013 17:39:00 +0000</pubDate>
		<dc:creator>Michael Tsai</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[coredata]]></category>
		<category><![CDATA[icloud]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[syncing]]></category>

		<guid isPermaLink="false">http://mjtsai.com/blog/?p=7404</guid>
		<description><![CDATA[Maarten Billemont presents a framework for working around Core Data iCloud bugs (via CocoaPods): While Apple portrays iCloud integration as trivial, the contrary is certainly true. Especially for Core Data, there are many caveats, side-effects and undocumented behaviors that need to be handled to get a reliable implementation. Unfortunately, Apple also has a bunch of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://lhunath.github.io/UbiquityStoreManager/">Maarten Billemont</a> presents a framework for working around Core Data iCloud bugs (via <a href="https://twitter.com/CocoaPods/status/332945680102461440">CocoaPods</a>):</p>
<blockquote cite="http://lhunath.github.io/UbiquityStoreManager/">
<p>While Apple portrays iCloud integration as trivial, the contrary is certainly true.  Especially for Core Data, there are many caveats, side-effects and undocumented behaviors that need to be handled to get a reliable implementation.</p>
<p>Unfortunately, Apple also has a bunch of serious bugs left to work out in this area, which can sometimes lead to cloud stores that become desynced or even irreparably broken.  <code>UbiquityStoreManager</code> handles these situations as best as possible.</p></blockquote>]]></content:encoded>
			<wfw:commentRss>http://mjtsai.com/blog/2013/05/11/ubiquitystoremanager/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spark Inspector 1.0.5</title>
		<link>http://mjtsai.com/blog/2013/05/10/spark-inspector-1-0-5/</link>
		<comments>http://mjtsai.com/blog/2013/05/10/spark-inspector-1-0-5/#comments</comments>
		<pubDate>Fri, 10 May 2013 20:04:13 +0000</pubDate>
		<dc:creator>Michael Tsai</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[macapp]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[sparkinspector]]></category>

		<guid isPermaLink="false">http://mjtsai.com/blog/?p=7401</guid>
		<description><![CDATA[Spark Inspector for iOS apps (via Collin Allen): Monitor your app and experiment in a way you never thought possible. Add our framework to your Xcode project, and the Spark Inspector will offer you an entirely new debugging perspective. With a three-dimensional view of your app&#8217;s interface and the ability to change view properties at [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sparkinspector.com">Spark Inspector</a> for iOS apps (via <a href="https://twitter.com/command_tab/status/332878482906415105">Collin Allen</a>):</p>
<blockquote cite="http://sparkinspector.com"><p>Monitor your app and experiment in a way you never thought possible. Add our framework to your Xcode project, and the Spark Inspector will offer you an entirely new debugging perspective. With a three-dimensional view of your app&rsquo;s interface and the ability to change view properties at runtime, Spark can help you craft the best apps on earth. Wiring your app together with notifications? Spark&rsquo;s notification monitor shows you each NSNotification as it&rsquo;s sent, complete with a stack trace, a list of recipients and invoked methods, and more. Understand app structure at a glance and debug smarter.</p></blockquote>]]></content:encoded>
			<wfw:commentRss>http://mjtsai.com/blog/2013/05/10/spark-inspector-1-0-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ArgumentParser</title>
		<link>http://mjtsai.com/blog/2013/05/09/argumentparser/</link>
		<comments>http://mjtsai.com/blog/2013/05/09/argumentparser/#comments</comments>
		<pubDate>Fri, 10 May 2013 01:25:09 +0000</pubDate>
		<dc:creator>Michael Tsai</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[terminal]]></category>

		<guid isPermaLink="false">http://mjtsai.com/blog/?p=7397</guid>
		<description><![CDATA[Chris Miller&#8217;s ArgumentParser is an Objective-C replacement for getopt_long (via Romain Briche).]]></description>
			<content:encoded><![CDATA[<p>Chris Miller&rsquo;s <a href="https://github.com/NSError/ArgumentParser">ArgumentParser</a> is an Objective-C replacement for <a href="https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man3/getopt_long.3.html">getopt_long</a> (via <a href="https://twitter.com/romainbriche/status/332522084653731840">Romain Briche</a>).</p>]]></content:encoded>
			<wfw:commentRss>http://mjtsai.com/blog/2013/05/09/argumentparser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sharing Data Locally Between iOS Apps</title>
		<link>http://mjtsai.com/blog/2013/05/09/sharing-data-locally-between-ios-apps/</link>
		<comments>http://mjtsai.com/blog/2013/05/09/sharing-data-locally-between-ios-apps/#comments</comments>
		<pubDate>Fri, 10 May 2013 01:12:30 +0000</pubDate>
		<dc:creator>Michael Tsai</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://mjtsai.com/blog/?p=7395</guid>
		<description><![CDATA[Dillan Laughlin shows how to use a URL scheme and a private pasteboard to send data from one iOS app to another.]]></description>
			<content:encoded><![CDATA[<p><a href="http://enharmonichq.com/sharing-data-locally-between-ios-apps/">Dillan Laughlin</a> shows how to use a URL scheme and a private pasteboard to send data from one iOS app to another.</p>]]></content:encoded>
			<wfw:commentRss>http://mjtsai.com/blog/2013/05/09/sharing-data-locally-between-ios-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apple and Photos</title>
		<link>http://mjtsai.com/blog/2013/05/08/apple-and-photos/</link>
		<comments>http://mjtsai.com/blog/2013/05/08/apple-and-photos/#comments</comments>
		<pubDate>Wed, 08 May 2013 22:04:14 +0000</pubDate>
		<dc:creator>Michael Tsai</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[camera]]></category>
		<category><![CDATA[icloud]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iphoto]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[photography]]></category>
		<category><![CDATA[photostream]]></category>

		<guid isPermaLink="false">http://mjtsai.com/blog/?p=7393</guid>
		<description><![CDATA[Peter Nixey (via John Siracusa): To be honest, I got a little confused at this point. Have I transferred them into iPhoto? I&#8217;m not sure I&#8217;ll check the photostream - ack, no, I remember you told me to delete photos off my photostream because there were too many. Hmmm, check the camera roll again. Hang [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://peternixey.com/post/49928526270/dear-apple-lets-talk-about-photos">Peter Nixey</a> (via <a href="https://twitter.com/siracusa/status/332151796137082882">John Siracusa</a>):</p>
<blockquote cite="http://peternixey.com/post/49928526270/dear-apple-lets-talk-about-photos"><p>To be honest, I got a little confused at this point. Have I transferred them into iPhoto? I&rsquo;m not sure I&rsquo;ll check the photostream - ack, no, I remember you told me to delete photos off my photostream because there were too many. Hmmm, check the camera roll again. Hang on a minute - where are my videos?! Turns out photostreams don&rsquo;t stream videos. Man, these things are not cool.</p></blockquote>
<p>I didn&rsquo;t realize how confusing Photo Stream could be until I tried explaining it to a friend. The mental model is so different from the rest of iCloud.</p>]]></content:encoded>
			<wfw:commentRss>http://mjtsai.com/blog/2013/05/08/apple-and-photos/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>New OpenStreetMap Editor</title>
		<link>http://mjtsai.com/blog/2013/05/08/new-openstreetmap-editor/</link>
		<comments>http://mjtsai.com/blog/2013/05/08/new-openstreetmap-editor/#comments</comments>
		<pubDate>Wed, 08 May 2013 21:50:05 +0000</pubDate>
		<dc:creator>Michael Tsai</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[maps]]></category>
		<category><![CDATA[openstreetmap]]></category>

		<guid isPermaLink="false">http://mjtsai.com/blog/?p=7391</guid>
		<description><![CDATA[OpenStreetMap: The new editor, codenamed &#8216;iD&#8217;, boasts an intuitive interface and clear walk-throughs that make editing much easier for new mappers. By lowering the barrier to contributions, we believe that more people can contribute their local knowledge to the map &#8211; the crucial factor that sets OSM apart from closed-source commercial maps.]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.openstreetmap.org/2013/05/07/openstreetmap-launches-all-new-easy-map-editor-and-announces-funding-appeal/">OpenStreetMap</a>:</p>
<blockquote cite="http://blog.openstreetmap.org/2013/05/07/openstreetmap-launches-all-new-easy-map-editor-and-announces-funding-appeal/"><p>The new editor, codenamed &lsquo;iD&rsquo;, boasts an intuitive interface and clear walk-throughs that make editing much easier for new mappers. By lowering the barrier to contributions, we believe that more people can contribute their local knowledge to the map &#8211; the crucial factor that sets OSM apart from closed-source commercial maps.</p></blockquote>]]></content:encoded>
			<wfw:commentRss>http://mjtsai.com/blog/2013/05/08/new-openstreetmap-editor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Common Misconceptions About Touch</title>
		<link>http://mjtsai.com/blog/2013/05/08/common-misconceptions-about-touch/</link>
		<comments>http://mjtsai.com/blog/2013/05/08/common-misconceptions-about-touch/#comments</comments>
		<pubDate>Wed, 08 May 2013 21:48:24 +0000</pubDate>
		<dc:creator>Michael Tsai</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[ios]]></category>

		<guid isPermaLink="false">http://mjtsai.com/blog/?p=7389</guid>
		<description><![CDATA[Steven Hoober (via Lukas Mathis): Text links are far too small to accurately target them. Some modern operating systems and browsers such as Google Chrome attempt to solve this problem by zooming in on small, ambiguous targets, to offer suitably large tappable areas.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.uxmatters.com/mt/archives/2013/03/common-misconceptions-about-touch.php">Steven Hoober</a> (via <a href="http://ignorethecode.net/blog/2013/05/07/common_misconceptions_about_touch/">Lukas Mathis</a>):</p>
<blockquote cite="http://www.uxmatters.com/mt/archives/2013/03/common-misconceptions-about-touch.php"><p>Text links are far too small to accurately target them. Some modern operating systems and browsers such as Google Chrome attempt to solve this problem by zooming in on small, ambiguous targets, to offer suitably large tappable areas.</p></blockquote>]]></content:encoded>
			<wfw:commentRss>http://mjtsai.com/blog/2013/05/08/common-misconceptions-about-touch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 1.287 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2013-05-21 18:37:56 -->
