<?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>Planetary Scale LLC &#187; Miscellany</title>
	<atom:link href="http://blog.planetaryscale.com/category/miscellany/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.planetaryscale.com</link>
	<description></description>
	<lastBuildDate>Fri, 20 Nov 2009 22:39:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>On the Postage Rejection</title>
		<link>http://blog.planetaryscale.com/2009/11/20/on-the-postage-rejection/</link>
		<comments>http://blog.planetaryscale.com/2009/11/20/on-the-postage-rejection/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 22:39:05 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[Miscellany]]></category>
		<category><![CDATA[App Store]]></category>
		<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">http://blog.planetaryscale.com/?p=80</guid>
		<description><![CDATA[Note: A technical post follows. If you&#8217;re not interested in iPhone programming, you can safely ignore it. Technical Analysis An update to RogueSheep&#8217;s Postage app was recently rejected by Apple because of a supposed overriding of a private method in a category. Apple most likely used a static analyzer to determine this problem. As far [...]]]></description>
			<content:encoded><![CDATA[<p>Note: A technical post follows. If you&#8217;re not interested in iPhone programming, you can safely ignore it.</p>
<p><b>Technical Analysis</b><br />
An update to RogueSheep&#8217;s Postage app was <a href="http://blog.roguesheep.com/2009/11/19/warning-love-hurts/">recently rejected</a> by Apple because of a supposed overriding of a private method in a category. Apple most likely used a static analyzer to determine this problem. As far as I can tell, Apple has a bug in their static analyzer.</p>
<p><a href="http://github.com/facebook/three20">Three20</a> adds a category method <code>-previousViewController</code> to the UIKit class <code>UIViewController</code>. According to RogueSheep:</p>
<blockquote><p>The notice from Apple indicated that we had used a private method of <code>UIViewController</code> called <code>previousViewController</code>. </p></blockquote>
<p>As far as I can tell, there is no private method in <code>UIViewController</code> called <code>-previousViewController</code>. There is, however, a private method on UINavigationController (a subclass of UIViewController) called <code>-previousViewController</code>.</p>
<p>However, this should not be a problem. Subclasses of <code>UIViewController</code> which implement <code>-previousViewController</code> themselves will override the category method defined on <code>UIViewController</code> by Three20. This includes <code>UINavigationController</code> and whatever other Apple-defined subclasses exist for <code>UIViewController</code>.</p>
<p>I have filed this as Radar #<a href="http://openradar.appspot.com/radar?id=117401">7414099</a> (<a href="rdar://7414099">rdar://7414099</a> for Apple employees).  The test project is available at: <a href="http://blog.planetaryscale.com/wp-content/uploads/2009/11/CategoryBehavior.zip">CategoryBehavior.zip</a></p>
<p><b>Opinion</b><br />
Ultimately, if my analysis is correct, this is just a bug. They happen. Static analyzers are especially difficult to get right, especially when the source isn&#8217;t available. This shouldn&#8217;t be read as an indictment of Apple, or of Apple&#8217;s intentions. They&#8217;re just trying to protect the user experience of their products and head off binary compatibility problems.</p>
<p>However, I personally think they&#8217;re going to have a difficult time trying to detect private methods with a static analyzer. They might have better luck doing analysis at runtime &#8212; checking the actual class hierarchy and interposing on method calls.</p>
<p>Meanwhile, there will be a lot of false positives caused by this, which is going to be frustrating for a lot of iPhone app developers.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.planetaryscale.com/2009/11/20/on-the-postage-rejection/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>bit.ly + tinyurl.com = FAIL</title>
		<link>http://blog.planetaryscale.com/2009/11/04/bitly-tinyurl-fail/</link>
		<comments>http://blog.planetaryscale.com/2009/11/04/bitly-tinyurl-fail/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 09:38:10 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[Mappity]]></category>
		<category><![CDATA[Miscellany]]></category>

		<guid isPermaLink="false">http://blog.planetaryscale.com/?p=60</guid>
		<description><![CDATA[For awhile now, Planetary Scale LLC has been using bit.ly to link to Mappity Quakes on the iTunes App Store from our homepage. I chose to use bit.ly because of their statistics tracking on clicks, something I couldn&#8217;t get just by linking directly to iTunes page for the app. Tonight, while writing another blog post, [...]]]></description>
			<content:encoded><![CDATA[<p>For awhile now, Planetary Scale LLC has been using <a href="http://bit.ly/" rel="nofollow">bit.ly</a> to link to <a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=294047845&#038;mt=8">Mappity Quakes</a> on the iTunes App Store from our <a href="http://planetaryscale.com/">homepage</a>. I chose to use bit.ly because of their <a href="http://bit.ly/info/aXYCp">statistics tracking</a> on clicks, something I couldn&#8217;t get just by linking directly to iTunes page for the app. </p>
<p>Tonight, while writing <a href="http://blog.planetaryscale.com/2009/11/04/iphone-app-sales-heatmap/">another blog post</a>, I tried clicking on the <a href="http://bit.ly/aXYCp" rel="nofollow">bit.ly link</a> to go to my app&#8217;s page, and instead saw this:<br />
<a href="http://blog.planetaryscale.com/wp-content/uploads/2009/11/bitly-fail.png"><img src="http://blog.planetaryscale.com/wp-content/uploads/2009/11/bitly-fail-300x152.png" alt="bitly fail" title="bitly fail" width="300" height="152" class="alignnone size-medium wp-image-62" /></a></p>
<p>Somehow, my link had been flagged as malicious and I&#8217;ve been missing out on potential sales because bit.ly decided to break my link. Why though?</p>
<p>Looking at <a href="http://bit.ly/pages/faq/" rel="nofollow">bit.ly&#8217;s FAQ</a>, they say:</p>
<blockquote><p>Bit.ly filters all links through several independent services to check for spam, suspected phishing scams, malware, and other objectionable content. We currently include <a href="http://code.google.com/apis/safebrowsing/">Google Safe Browsing</a>, <a href="http://www.surbl.org/">SURBL</a>, and <a href="http://www.spamcop.net/">SpamCop</a> in our operations.</p></blockquote>
<p>Checking Google Safe Browsing, SURBL, and SpamCop, I see neither planetaryscale.com nor itunes.apple.com are blacklisted.</p>
<p>Okay, that&#8217;s weird… but wait! It looks like when I originally created the link, it was actually a link to a tinyurl.com link. That was kind of dumb of me. However, as a sanity check, I&#8217;ve created a link to <a href="http://disney.com/">Disney.com</a> with tinyurl to see if it too will be blacklisted by bit.ly. Unsuprisingly, <a href="http://tinyurl.com/3vjch">it is</a>. Checking Google Safe Browsing, <a href="http://www.google.com/safebrowsing/diagnostic?site=tinyurl.com">tinyurl.com is listed</a> as an intermediary to malware, <a href="http://www.google.com/safebrowsing/diagnostic?site=bit.ly">as is bit.ly</a>.</p>
<p>So, the takeaway from all of this is: as far as I can tell bit.ly is flagging all links to tinyurl.com as malware, even just a link to the <a href="http://bit.ly/nmP3X" rel="nofollow">tinyurl homepage</a>.</p>
<p>Why is this worse than just a screwup on my part? Consider that bit.ly is used to <em>automatically</em> shorten URLs in a lot of services, such as Twitter. A quick check shows bit.ly also flags links to the homepage of is.gd, tr.im, cli.gs, tiny.cc, BudURL.com, snipr.com, snipurl.com, and kl.am, all of which are competitors. In fact, if I tried to link to the <a href="http://budurl.com/page/enterprise-edition">Enterprise Edition of BudURL</a> in a tweet, it would be automatically converted to a <a href="http://bit.ly/shZ3P" rel="nofollow">bit.ly link</a>. Clicking on that link would take someone to a giant warning page, rather than the product of a competitor.</p>
<p>I realize bit.ly is trying to do this as a safety feature, but as it stands I&#8217;m moving my web links to direct URLs. The added value of their statistics tracking just isn&#8217;t enough to offset the risk of them breaking my links.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.planetaryscale.com/2009/11/04/bitly-tinyurl-fail/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
