<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>A Small Duck Speaks!</title>
	<atom:link href="http://smallduck.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://smallduck.wordpress.com</link>
	<description>(sometimes in kinda rambly sentences) Some musings about iPhone &#38; Mac development, an experiment in wordpress feed aggregation, oh and maybe some ascii art. Thanks for visiting!</description>
	<lastBuildDate>Mon, 22 Aug 2011 20:37:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='smallduck.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/c1ae8d0d43acc7b74e88926c91d936f7?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>A Small Duck Speaks!</title>
		<link>http://smallduck.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://smallduck.wordpress.com/osd.xml" title="A Small Duck Speaks!" />
	<atom:link rel='hub' href='http://smallduck.wordpress.com/?pushpress=hub'/>
		<item>
		<title>10 results per page considered harmful</title>
		<link>http://smallduck.wordpress.com/2011/08/22/10-results-per-page-considered-harmful/</link>
		<comments>http://smallduck.wordpress.com/2011/08/22/10-results-per-page-considered-harmful/#comments</comments>
		<pubDate>Mon, 22 Aug 2011 20:24:59 +0000</pubDate>
		<dc:creator>smallduck</dc:creator>
				<category><![CDATA[Musings]]></category>
		<category><![CDATA[rant]]></category>
		<category><![CDATA[usuability]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://smallduck.wordpress.com/?p=233</guid>
		<description><![CDATA[Websites the world over, please allow me to have more than 10 results per page! Except for the degenerate case of 10 or fewer items, I think 10-per-page is pretty much the worst case for usability. There are 2 extreme options for presenting a large list, each have their own obvious merrits: A) no vertical [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smallduck.wordpress.com&amp;blog=4285379&amp;post=233&amp;subd=smallduck&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Websites the world over, please allow me to have more than 10 results per page! Except for the degenerate case of 10 or fewer items, I think 10-per-page is pretty much the worst case for usability. There are 2 extreme options for presenting a large list, each have their own obvious merrits: A) no vertical scrolling, a screen full is shown at a time and more results are revealed only by paging left and right, and B) no paging, all results on a one, perhaps super-long, page.</p>
<p>10-per-page is a compromise between A and B that has the worst of each and putting you equally in two modes at once. It necessitates many many page flips left &amp; right, like A, but throws out its single benefit of being able to view each page all at once. It forces me scroll up and down, like B, but doesn&#8217;t let me stay in that <em>mode</em> long enough to gain its advantage. For many screen sizes, 10-per-page results in an amount of vertical scrolling that perfectly maximizes annoyance, like having to bob up and down. It&#8217;s as efficient as reading a book where every page has a fold out flap. There&#8217;s a reason why dictionaries aren&#8217;t pop-up books.</p>
<p>The one thing that&#8217;s reasonable with 10-per-page is that it results in bearable page load times, when <em>on dialup</em>. Are we still designing for 1998&#8242;s lowest common demoniator? Yes, I believe google is to blame.</p>
<p>Some better solutions: a gradually revealed infinitely scrolling page &#8211; like the last twitter redesign, a large number of results per page &#8211; 100 is pretty good, a logical grouping of results per page &#8211; a day&#8217;s or week&#8217;s worth or something say, which at least this reveals some rationalle for combining paging and scrolling besides driving the user mad.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/smallduck.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/smallduck.wordpress.com/233/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/smallduck.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/smallduck.wordpress.com/233/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/smallduck.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/smallduck.wordpress.com/233/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/smallduck.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/smallduck.wordpress.com/233/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/smallduck.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/smallduck.wordpress.com/233/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/smallduck.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/smallduck.wordpress.com/233/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/smallduck.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/smallduck.wordpress.com/233/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smallduck.wordpress.com&amp;blog=4285379&amp;post=233&amp;subd=smallduck&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy"></div>]]></content:encoded>
			<wfw:commentRss>http://smallduck.wordpress.com/2011/08/22/10-results-per-page-considered-harmful/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c16a9b72a2f7b0b6ec74caaca9e5f70f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">smallduck</media:title>
		</media:content>
	</item>
		<item>
		<title>Finally giving away that unlocked iPhone !!!</title>
		<link>http://smallduck.wordpress.com/2011/07/16/finally-giving-away-that-unlocked-iphone/</link>
		<comments>http://smallduck.wordpress.com/2011/07/16/finally-giving-away-that-unlocked-iphone/#comments</comments>
		<pubDate>Sat, 16 Jul 2011 21:29:02 +0000</pubDate>
		<dc:creator>smallduck</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[321photo]]></category>
		<category><![CDATA[click]]></category>
		<category><![CDATA[contest]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iphone4]]></category>

		<guid isPermaLink="false">http://smallduck.wordpress.com/?p=216</guid>
		<description><![CDATA[[This was a comment I made to last year's original post about my company's contest. I thought it deserved its own post though.] Hooray, we’re finally giving away that iPhone in the coming weeks. History: last year my company (my friend &#38; i) started a contest to promote our iPhone camera app 321 Photo. We were giving [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smallduck.wordpress.com&amp;blog=4285379&amp;post=216&amp;subd=smallduck&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>[This was a comment I made to last year's <a href="http://smallduck.wordpress.com/2010/08/25/my-company-is-giving-away-an-unlocked-iphone-4/">original post</a> about my company's contest. I thought it deserved its own post though.]</p>
<p>Hooray, we’re finally giving away that iPhone in the coming weeks. History: last year my company (my friend &amp; i) started a contest to promote our iPhone camera app <a href="http://room1337.com/321photo/">321 Photo</a>. We were giving away a iPhone 4 (kinda new at the time), notably one of the factory-unlocked variety which were available in Canada then but not the US.</p>
<p>After failing to get the initial response we wanted, a little before the original deadline we restated the contest to end only after hitting a (modest) number of twitter followers &amp; facebook fan^H^H^H likes, which also we failed to reach after several months. Our internal plan was to finally do the give-away, no matter how many followers, as promotion of the app’s forthcoming major update.</p>
<p>Well due to feature creep, gold plating and fixes to crap implementations (my bad), it’s taken all this time to get this update done. But not we finally have the improved and rebranded app in the store, <strong><em><a href="http://room1337.com/click/">Click!</a></em></strong>. The first flavour available being the new for-pay app ($2 i think), and the free-plus-in-app-purchase-upgrade-for-more-features flavour (precisely an upgrade of <em>321 Photo</em>) coming very soon.</p>
<p>It’s not too late to <a href="http://room1337.com/321contest">enter</a>. Read more about the rebranding <a href="http://room1337.com/2011/07/07/321-photo-is-dead-long-live-click/">on our site&#8217;s blog</a>.</p>
<p>[UPDATE: also, to promote my app's update &amp; rebranding, I changed my wordpress theme to <a href="http://theme.wordpress.com/themes/clean-home/">Clean Home</a> by <a href="http://midmodesign.com/">Mid Mo Design</a>]</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/smallduck.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/smallduck.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/smallduck.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/smallduck.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/smallduck.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/smallduck.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/smallduck.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/smallduck.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/smallduck.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/smallduck.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/smallduck.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/smallduck.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/smallduck.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/smallduck.wordpress.com/216/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smallduck.wordpress.com&amp;blog=4285379&amp;post=216&amp;subd=smallduck&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy"></div>]]></content:encoded>
			<wfw:commentRss>http://smallduck.wordpress.com/2011/07/16/finally-giving-away-that-unlocked-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c16a9b72a2f7b0b6ec74caaca9e5f70f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">smallduck</media:title>
		</media:content>
	</item>
		<item>
		<title>More On Software Patents (pun intended)</title>
		<link>http://smallduck.wordpress.com/2011/07/16/more-on-software-patents-pun-intended/</link>
		<comments>http://smallduck.wordpress.com/2011/07/16/more-on-software-patents-pun-intended/#comments</comments>
		<pubDate>Sat, 16 Jul 2011 21:13:41 +0000</pubDate>
		<dc:creator>smallduck</dc:creator>
				<category><![CDATA[Musings]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[algorithms]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[patents]]></category>

		<guid isPermaLink="false">http://smallduck.wordpress.com/?p=213</guid>
		<description><![CDATA[I originally wrote this as a response to this macrumors article where I say Apple&#8217;s 2 software patents, for which the judge ruled in their favour against HTC, are lame. It&#8217;s because all software patents are lame [or.. moronic]. The decision on these 2 patents doesn&#8217;t cover any part of the core of what makes [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smallduck.wordpress.com&amp;blog=4285379&amp;post=213&amp;subd=smallduck&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I originally wrote this as a response to <a href="http://forums.macrumors.com/showthread.php?t=1188414">this macrumors article</a> where I say Apple&#8217;s 2 software patents, for which the judge ruled in their favour against HTC, are lame.</p>
<p>It&#8217;s because all software patents are lame [or.. moronic]. The decision on these 2 patents doesn&#8217;t cover any part of the core of what makes the iPhone what it is, and like most similar patents, there&#8217;s surely prior art in the past decades of the patent-less software industry but nothing that can be proven.</p>
<p>It used to be that a patent was on a physical invention and you submitted its technical design (or even a working unit, was it?) and the mechanics of how it worked was what you had protection for. Also the design was put into the public record so that the invention didn&#8217;t die with the inventor, which was apparently common beforehand when everything was trade secrets. This was the problem that the patent system was meant to solve.</p>
<p>A patent on, say, an automatic car window, applied to the design of the mechanism inside the door that makes it work. Some competitor could invent a different mechanism that worked the same way to the user. If patents on physical invention worked like a software patents then they wouldn&#8217;t need to submit the mechanism, only the idea and vague outline of its workings (with the lifter unit represented by a square in a diagram, connected to crude drawings of the door, switch and window) such that anyone inventing a new mechanism would be in violation of the patent.</p>
<p>The mechanics and technical design of software, what mirrors the patentable design of physical inventions, is by definition the source code. But because the patent office employs lawyers and not coders, all they have the expertise to analyse are high-level requirements specifications and behavior (diagrams with boxes and lines described by paragraphs of useless legalese).</p>
<p>Software patented should follow the intent of the patent system. It should be a kind of open source process, the code is submitted and visible to competitors, but they can&#8217;t use in the marketplace until after however-many years. To be in violation the patent you&#8217;d have to had copied that source code, reimplementing it would almost invariably be a new invention. (Don&#8217;t believe that? Look at a coding competitions and see how different people&#8217;s solutions are.)</p>
<p>A software patent should assist competitors in copying the software exact behaviour! And with source code made open, they can ensure they&#8217;re using different algorithms. (Most commenters on that macrumors <a href="http://forums.macrumors.com/showthread.php?t=1188414">forum</a> talk about algorithms where they don&#8217;t even know what the word means, like that of Apple&#8217;s multitouch. Under their concept, all similarly-performing sorting algorithms would be the same because the produced the exact same behaviour to the user)</p>
<p>[I may be totally wrong, IANAL and all I know about patents are vague recollections from a long time ago, probably from a schoolhouse rock PSA]</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/smallduck.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/smallduck.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/smallduck.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/smallduck.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/smallduck.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/smallduck.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/smallduck.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/smallduck.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/smallduck.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/smallduck.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/smallduck.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/smallduck.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/smallduck.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/smallduck.wordpress.com/213/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smallduck.wordpress.com&amp;blog=4285379&amp;post=213&amp;subd=smallduck&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy"></div>]]></content:encoded>
			<wfw:commentRss>http://smallduck.wordpress.com/2011/07/16/more-on-software-patents-pun-intended/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c16a9b72a2f7b0b6ec74caaca9e5f70f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">smallduck</media:title>
		</media:content>
	</item>
		<item>
		<title>Wow! Eero language, dialect of Objective-C</title>
		<link>http://smallduck.wordpress.com/2011/07/07/wow-eero-language-dialect-of-objective-c/</link>
		<comments>http://smallduck.wordpress.com/2011/07/07/wow-eero-language-dialect-of-objective-c/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 10:23:07 +0000</pubDate>
		<dc:creator>smallduck</dc:creator>
				<category><![CDATA[Musings]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[eero]]></category>
		<category><![CDATA[objective-c]]></category>

		<guid isPermaLink="false">http://smallduck.wordpress.com/?p=210</guid>
		<description><![CDATA[I saw this a few months ago in passing, planned to get back to it, but nearly forgot until earlier today. http://eerolanguage.org/ I say again, wow. It&#8217;s a mod to the clang compiler (or set of patches, or fork, what have you) that adds a tons of yummy syntactic sugar to Objective-C. I can&#8217;t wait until this [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smallduck.wordpress.com&amp;blog=4285379&amp;post=210&amp;subd=smallduck&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I saw this a few months ago in passing, planned to get back to it, but nearly forgot until earlier today.</p>
<p>http://eerolanguage.org/</p>
<p>I say again, wow. It&#8217;s a mod to the clang compiler (or set of patches, or fork, what have you) that adds a tons of yummy syntactic sugar to Objective-C. I can&#8217;t wait until this is stable enough for production. If I was starting a project now that had a ship time a few months out, I&#8217;d jump on board right away.</p>
<p>For maximal effect read <a href="http://eerolanguage.org/from-objective-c-to-eero/">this</a> then the <a href="http://eerolanguage.org/">blog</a> in reverse (ie. chronological) order.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/smallduck.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/smallduck.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/smallduck.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/smallduck.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/smallduck.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/smallduck.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/smallduck.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/smallduck.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/smallduck.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/smallduck.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/smallduck.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/smallduck.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/smallduck.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/smallduck.wordpress.com/210/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smallduck.wordpress.com&amp;blog=4285379&amp;post=210&amp;subd=smallduck&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy"></div>]]></content:encoded>
			<wfw:commentRss>http://smallduck.wordpress.com/2011/07/07/wow-eero-language-dialect-of-objective-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c16a9b72a2f7b0b6ec74caaca9e5f70f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">smallduck</media:title>
		</media:content>
	</item>
		<item>
		<title>Cocoa terse backtrace using NSRegularExpression</title>
		<link>http://smallduck.wordpress.com/2011/06/20/cocoa-terse-backtrace-using-nsregularexpression/</link>
		<comments>http://smallduck.wordpress.com/2011/06/20/cocoa-terse-backtrace-using-nsregularexpression/#comments</comments>
		<pubDate>Tue, 21 Jun 2011 00:13:34 +0000</pubDate>
		<dc:creator>smallduck</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[ios sdk]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[three20]]></category>

		<guid isPermaLink="false">http://smallduck.wordpress.com/?p=192</guid>
		<description><![CDATA[I recently wanted to improve some logging code to print out the callers to some methods (I&#8217;m tracking down errant retains / releases). [NSThread callStackSymbols] is excellent and easy, but I found that simply logging a chunk of the call stack was too verbose. I wanted to include callers from just my app and also [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smallduck.wordpress.com&amp;blog=4285379&amp;post=192&amp;subd=smallduck&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I recently wanted to improve some logging code to print out the callers to some methods (I&#8217;m tracking down errant retains / releases). <strong>[NSThread callStackSymbols]</strong> is excellent and easy, but I found that simply logging a chunk of the call stack was too verbose. I wanted to include callers from just my app and also parse it to include just the method names, ie. to turn this output from callStackSymbols:</p>
<pre><code>0   MyApp                               0x0005da3a -[UnsavedPhoto retain] + 136,
1   CoreFoundation                      0x02b75fac CFRetain + 92,
2   CoreFoundation                      0x02b7ea52 __CFBasicHashAddValue + 98,
3   CoreFoundation                      0x02b86219 CFDictionarySetValue + 105,
4   CoreFoundation                      0x02c620d5 -[__NSCFDictionary setObject:forKey:] + 117,
5   MyApp                               0x000d631e -[OrderedDictionary setObject:forKey:] + 165,
6   MyApp                               0x0005c668 -[PhotoSaver addPhoto:] + 224,
...</code></pre>
<p>into just this: <strong>&quot;-[OrderedDictionary removeObjectForKey:] &lt; -[PhotoSaver discardPhoto:]&quot;</strong>.</p>
<p>I made a method in NSString category (um, because it generates a string), which I call like this:</p>
<pre><code>logthis = [NSString appBacktraceOfDepth:2 fromStackSymbols:[NSThread callStackSymbols]];</code></pre>
<p>Here it is, fairly concise. Note that it does something reasonable if pre-iOS4 and NSRegularExpression is not present (namely just returns a chunk of the line from the top stack frame), fires an assertion if the regular expression fails (because it shouldn&#8217;t), and restarts without the restriction of matching only app calls if there are none in the stack before <strong>main</strong>.</p>
<p>I mostly decided to blog this because I didn&#8217;t initially spot any good examples of using NSRegularExpression to extract capture groups. The answer was to use <strong>firstMatchInString:options:range:</strong> to get a NSTextCheckingResult and then <strong>replacementStringForResult:inString:offset:template:</strong>.</p>
<pre><code>@interface NSString (backtraceOfDepth_fromStackSymbols)
+ (NSString *)appBacktraceOfDepth:(int)depth fromStackSymbols:(NSArray *)frames;
+ (NSString *)backtraceOfDepth:(int)depth fromStackSymbols:(NSArray *)frames;
+ (NSString *)backtraceOfDepth:(int)depth fromStackSymbols:(NSArray *)frames matching:(NSString *)from;
@end
@implementation NSString (backtraceOfDepth_fromStackSymbols)
+ (NSString *)appBacktraceOfDepth:(int)depth fromStackSymbols:(NSArray *)frames { return [self backtraceOfDepth:depth fromStackSymbols:frames matching:[[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleNameKey]]; }
+ (NSString *)backtraceOfDepth:(int)depth fromStackSymbols:(NSArray *)frames { return [self backtraceOfDepth:depth fromStackSymbols:frames matching:nil]; }
+ (NSString *)backtraceOfDepth:(int)depth fromStackSymbols:(NSArray *)frames matching:(NSString *)from {
  NSRegularExpression *regex = nil;
  if (!NSClassFromString(@"NSRegularExpression") || !(regex = [NSRegularExpression regularExpressionWithPattern:@"[0-9]+ +(.+[^ ]) +0x[0-9a-f]+ (.+) \\+ [0-9a-f]+" options:0 error:nil]))
    return [[frames objectAtIndex:1] substringFromIndex:51]; // no regex, be lame and rely on column counts
  for (int goodframes=0, framenum=1; goodframes &lt; depth &amp;&amp; framenum &lt; [frames count]; ++framenum) {
    NSString *frame = [frames objectAtIndex:framenum];
    NSTextCheckingResult *match = [regex firstMatchInString:frame options:0 range:NSMakeRange(0, [frame length])];
    if (!match)
      NSAssert1(NO, @"unparsed stack frame: %@", frame);
    if (from &amp;&amp; ![from isEqualToString:[regex replacementStringForResult:match inString:frame offset:0 template:@"$1"]])
      continue;
    ++goodframes;
    NSString *caller = [regex replacementStringForResult:match inString:frame offset:0 template:@"$2"];
    if (from &amp;&amp; goodframes == 1 &amp;&amp; [caller isEqualToString:@"main"])
      return [self backtraceOfDepth:depth fromStackSymbols:frames matching:nil]; // no useful calls from us, take ones from anyone instead
    result = !result ? caller : [result stringByAppendingFormat:@&quot; &lt; %@&quot;, caller];
  }
  return result ? result : @"?";
}
@end</code></pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/smallduck.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/smallduck.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/smallduck.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/smallduck.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/smallduck.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/smallduck.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/smallduck.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/smallduck.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/smallduck.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/smallduck.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/smallduck.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/smallduck.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/smallduck.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/smallduck.wordpress.com/192/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smallduck.wordpress.com&amp;blog=4285379&amp;post=192&amp;subd=smallduck&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy"></div>]]></content:encoded>
			<wfw:commentRss>http://smallduck.wordpress.com/2011/06/20/cocoa-terse-backtrace-using-nsregularexpression/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c16a9b72a2f7b0b6ec74caaca9e5f70f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">smallduck</media:title>
		</media:content>
	</item>
		<item>
		<title>My thoughts about the GPL</title>
		<link>http://smallduck.wordpress.com/2011/01/10/my-thoughts-about-the-gpl/</link>
		<comments>http://smallduck.wordpress.com/2011/01/10/my-thoughts-about-the-gpl/#comments</comments>
		<pubDate>Mon, 10 Jan 2011 22:52:08 +0000</pubDate>
		<dc:creator>smallduck</dc:creator>
				<category><![CDATA[Musings]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[gpl]]></category>
		<category><![CDATA[software licenses]]></category>

		<guid isPermaLink="false">https://smallduck.wordpress.com/2011/01/10/my-thoughts-about-the-gpl/</guid>
		<description><![CDATA[A thought on GPL that didn&#8217;t fit in a tweet. GPL developers are idealists and have noble intent and I&#8217;m saddened to see people I respect tarnish their efforts when they bad-mouth the GPL. For commercial software developers, code that people want to contribute to the GPL is unusable to them, but then again so [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smallduck.wordpress.com&amp;blog=4285379&amp;post=191&amp;subd=smallduck&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A thought on GPL that didn&#8217;t fit in a tweet. GPL developers are idealists and have noble intent and I&#8217;m saddened to see people I respect tarnish their efforts when they bad-mouth the GPL.</p>
<p>For commercial software developers, code that people want to contribute to the GPL is unusable to them, but then again so is the source code to MS Word and Photoshop, where&#8217;s the vitriol against that set of source code. To use one set of source you sign your over to the FSF&#8217;s concept to community, to use the other you accept a job at MS or Adobe and sign your work over to them.</p>
<p>From the outside of both groups, their an unusable set of source I don&#8217;t see a big difference between the two. Oh, except that I can inspect and study GPL code and, use the resulting products freely, contribute missing functionality if I so desire, all benefits. To complain that you can look but not touch seems petty to me. Maybe I&#8217;m missing the point.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/smallduck.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/smallduck.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/smallduck.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/smallduck.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/smallduck.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/smallduck.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/smallduck.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/smallduck.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/smallduck.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/smallduck.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/smallduck.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/smallduck.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/smallduck.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/smallduck.wordpress.com/191/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smallduck.wordpress.com&amp;blog=4285379&amp;post=191&amp;subd=smallduck&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy"></div>]]></content:encoded>
			<wfw:commentRss>http://smallduck.wordpress.com/2011/01/10/my-thoughts-about-the-gpl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c16a9b72a2f7b0b6ec74caaca9e5f70f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">smallduck</media:title>
		</media:content>
	</item>
		<item>
		<title>Found my TTPhotoView bug</title>
		<link>http://smallduck.wordpress.com/2011/01/05/182/</link>
		<comments>http://smallduck.wordpress.com/2011/01/05/182/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 08:06:52 +0000</pubDate>
		<dc:creator>smallduck</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[321photo]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iphonesdk]]></category>
		<category><![CDATA[three20]]></category>

		<guid isPermaLink="false">http://smallduck.wordpress.com/?p=182</guid>
		<description><![CDATA[This is a tip for anyone hacking TTPhotoViewController, and specifically TTPhotoView. If you&#8217;re finding swiping only rotating between three photos, and if there&#8217;s a mix of landscape and portrait then it gets a redraw bug that looks like this: then you&#8217;ve probably disabled updateLayer (perhaps because it wasn&#8217;t working for photos with orientations other than [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smallduck.wordpress.com&amp;blog=4285379&amp;post=182&amp;subd=smallduck&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><!-- p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px 'Inconsolata-dz'} --><a class="vt-p" href="http://smallduck.files.wordpress.com/2011/01/screen-shot-2010-12-19-at-4-32-52-am.png"><img class="alignright size-medium wp-image-183" title="Screen shot 2010-12-19 at 4.32.52 AM" src="http://smallduck.files.wordpress.com/2011/01/screen-shot-2010-12-19-at-4-32-52-am.png?w=159&#038;h=300" alt="TTPhotoView bug Example" width="159" height="300" /></a>This is a tip for anyone hacking TTPhotoViewController, and specifically TTPhotoView. If you&#8217;re finding swiping only rotating between three photos, and if there&#8217;s a mix of landscape and portrait then it gets a redraw bug that looks like this:</p>
<p>then you&#8217;ve probably disabled updateLayer (perhaps because it wasn&#8217;t working for photos with orientations other than Up) but didn&#8217;t replace it with [self setNeedsDisplay]. You&#8217;re welcome.<br />
Also, for anyone else trying to untie TTPhotoView from TTURLCache and instead work with images you can&#8217;t load asynchronously: don&#8217;t. Instead make it work with fake URLs, force-feeding the cache as you go. Hey ALAssetLibrary, thanks for being async in all the wrong places.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/smallduck.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/smallduck.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/smallduck.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/smallduck.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/smallduck.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/smallduck.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/smallduck.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/smallduck.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/smallduck.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/smallduck.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/smallduck.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/smallduck.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/smallduck.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/smallduck.wordpress.com/182/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smallduck.wordpress.com&amp;blog=4285379&amp;post=182&amp;subd=smallduck&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy"></div>]]></content:encoded>
			<wfw:commentRss>http://smallduck.wordpress.com/2011/01/05/182/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c16a9b72a2f7b0b6ec74caaca9e5f70f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">smallduck</media:title>
		</media:content>

		<media:content url="http://smallduck.files.wordpress.com/2011/01/screen-shot-2010-12-19-at-4-32-52-am.png?w=159" medium="image">
			<media:title type="html">Screen shot 2010-12-19 at 4.32.52 AM</media:title>
		</media:content>
	</item>
		<item>
		<title>A multitouch UIPanGestureRecognizer trick</title>
		<link>http://smallduck.wordpress.com/2010/11/25/uipangesturerecognizer-trick/</link>
		<comments>http://smallduck.wordpress.com/2010/11/25/uipangesturerecognizer-trick/#comments</comments>
		<pubDate>Thu, 25 Nov 2010 16:58:26 +0000</pubDate>
		<dc:creator>smallduck</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[321photo]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iphonesdk]]></category>
		<category><![CDATA[uikit]]></category>

		<guid isPermaLink="false">http://smallduck.wordpress.com/?p=168</guid>
		<description><![CDATA[Even though I wanted our app to still support iPhone OS 3.1, I realized that since our extra gesture-based features are iOS4 only, I could use UIGestureRecognizer for those. I already had a UIView subclass I was using as a transparent overlay where I implemented my custom tap detection and drag tracking. What I did [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smallduck.wordpress.com&amp;blog=4285379&amp;post=168&amp;subd=smallduck&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Even though I wanted our app to still support iPhone OS 3.1, I realized that since our extra gesture-based features are iOS4 only, I could use UIGestureRecognizer for those. I already had a UIView subclass I was using as a transparent overlay where I implemented my custom tap detection and drag tracking. What I did was bite the bullet and replaced it completely with a plain UIView with gesture recognizers attached. In a few minutes I was able to duplicate all the behaviour that took lots of trial and error to get right. Kudos to everyone at Apple who worked on UIGestureRecognizer.</p>
<p>One part of the new behaviour I wanted to try out was a drag that started with two fingers. It looked like UIPanGestureRecognizer was working but it was ending the gesture when one finger was lifted. I wanted to support starting with a two-finger tap but then still track if the user lifts one finger.</p>
<p>I thought I’d have to implement a custom recognizer subclass when I came upon a little hack that seems to work: In my action method, I change the minimumNumberOfTouches property from 2 to 1 on the fly when called in the Began state, then set it back to 2 when called with Ended or Cancelled.</p>
<pre><code>- (void)drag2Fingers:(UIPanGestureRecognizer *)sender {
    if (sender.state == UIGestureRecognizerStateBegan) {
        sender.minimumNumberOfTouches = 1;
        ...
    } else if (sender.state == UIGestureRecognizerStateEnded ||
               sender.state == UIGestureRecognizerStateCancelled) {
        sender.minimumNumberOfTouches = 2;
        ...
    }
}</code></pre>
<p>This seems to work but maybe it&#8217;s presumptuous to think it&#8217;s always going to. I think I&#8217;ll be doing that custom recognizer subclass in a future update.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/smallduck.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/smallduck.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/smallduck.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/smallduck.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/smallduck.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/smallduck.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/smallduck.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/smallduck.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/smallduck.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/smallduck.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/smallduck.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/smallduck.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/smallduck.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/smallduck.wordpress.com/168/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smallduck.wordpress.com&amp;blog=4285379&amp;post=168&amp;subd=smallduck&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy"></div>]]></content:encoded>
			<wfw:commentRss>http://smallduck.wordpress.com/2010/11/25/uipangesturerecognizer-trick/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c16a9b72a2f7b0b6ec74caaca9e5f70f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">smallduck</media:title>
		</media:content>
	</item>
		<item>
		<title>Note to Blenz Coffee</title>
		<link>http://smallduck.wordpress.com/2010/11/08/note-to-blenz-coffee/</link>
		<comments>http://smallduck.wordpress.com/2010/11/08/note-to-blenz-coffee/#comments</comments>
		<pubDate>Tue, 09 Nov 2010 00:20:33 +0000</pubDate>
		<dc:creator>smallduck</dc:creator>
				<category><![CDATA[Musings]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[firesheep]]></category>
		<category><![CDATA[network secutity]]></category>
		<category><![CDATA[wifi]]></category>
		<category><![CDATA[wpa2]]></category>

		<guid isPermaLink="false">http://smallduck.wordpress.com/?p=160</guid>
		<description><![CDATA[[comment sent to http://blenzcommunity.com] Dear Blenz Corporation, Please add WP2 to your wifi hotspots. Users already need a code on a piece of paper from the cashier, it&#8217;s wouldn&#8217;t be much more trouble to include a common wifi passcode on those. Something even as obvious as &#8220;password&#8221; would be ok. Why? Please search for the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smallduck.wordpress.com&amp;blog=4285379&amp;post=160&amp;subd=smallduck&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>[comment sent to http://blenzcommunity.com]<br />
Dear Blenz Corporation,</p>
<p>Please add WP2 to your wifi hotspots. Users already need a code on a piece of paper from the cashier, it&#8217;s wouldn&#8217;t be much more trouble to include a common wifi passcode on those. Something even as obvious as &#8220;password&#8221; would be ok.</p>
<p>Why? Please search for the recent news about &#8220;firesheep&#8221; to find out. Turning WPA2 on, even with an obvious password, provides isolated point to point encryption so one user can&#8217;t snoop packets from another.</p>
<p>If you feel that some your users won&#8217;t be able to use WPA2 or won&#8217;t be able to figure out the extra layer, then an option would be to provide a secondary WPA2 network, perhaps with the passcode spelled out in the network name/SSID. People who knew or cared about security would have the option to use that and you would still satisfy those would weren&#8217;t compatible. I would suggest adding instructions to your access code entry landing page to help users to migrate from the insecure to the secure network for their own benefit.</p>
<p>Regards,<br />
Neighbourhood Enthusiast Talking Critically Lamenting Open Wifi Networks</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/smallduck.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/smallduck.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/smallduck.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/smallduck.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/smallduck.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/smallduck.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/smallduck.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/smallduck.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/smallduck.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/smallduck.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/smallduck.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/smallduck.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/smallduck.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/smallduck.wordpress.com/160/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smallduck.wordpress.com&amp;blog=4285379&amp;post=160&amp;subd=smallduck&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy"></div>]]></content:encoded>
			<wfw:commentRss>http://smallduck.wordpress.com/2010/11/08/note-to-blenz-coffee/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c16a9b72a2f7b0b6ec74caaca9e5f70f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">smallduck</media:title>
		</media:content>
	</item>
		<item>
		<title>UIAlertView + UIImage</title>
		<link>http://smallduck.wordpress.com/2010/10/14/uialertview-uiimage/</link>
		<comments>http://smallduck.wordpress.com/2010/10/14/uialertview-uiimage/#comments</comments>
		<pubDate>Thu, 14 Oct 2010 22:01:08 +0000</pubDate>
		<dc:creator>smallduck</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[iphone iphonesdk uikit uiimage]]></category>

		<guid isPermaLink="false">http://smallduck.wordpress.com/?p=151</guid>
		<description><![CDATA[Today I wanted some debug code to easily display an UIImage to check its orientation. At first I was going to just add it to my main view then remove it after a few seconds, but then realized a modified UIAlertView would be better since it could be displayed fire-and-forget style like [alert show]; [alert [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smallduck.wordpress.com&amp;blog=4285379&amp;post=151&amp;subd=smallduck&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Today I wanted some debug code to easily display an UIImage to check its orientation. At first I was going to just add it to my main view then remove it after a few seconds, but then realized a modified UIAlertView would be better since it could be displayed fire-and-forget style like <code>[alert show]; [alert release];</code>, it wouldn&#8217;t go away before I had a chance to look, and there could be a title to remind me what I was looking at.</p>
<p>Some trial-and-error was involved to get the message newlines &amp; image position right, but here&#8217;s what I came up with. It displays the image scaled to 100 units height.</p>
<pre><code>UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:@"\n\n\n\n\n" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
CGFloat imageHeight = 100;
CGFloat imageWidth = imageHeight * image.size.width / image.size.height;
imageView.frame = CGRectMake(floor((284 - imageWidth)/2), 47, imageWidth, imageHeight);
[alert addSubview:imageView];
[alert show];
[alert release];</code></pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/smallduck.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/smallduck.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/smallduck.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/smallduck.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/smallduck.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/smallduck.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/smallduck.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/smallduck.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/smallduck.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/smallduck.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/smallduck.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/smallduck.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/smallduck.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/smallduck.wordpress.com/151/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smallduck.wordpress.com&amp;blog=4285379&amp;post=151&amp;subd=smallduck&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy"></div>]]></content:encoded>
			<wfw:commentRss>http://smallduck.wordpress.com/2010/10/14/uialertview-uiimage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c16a9b72a2f7b0b6ec74caaca9e5f70f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">smallduck</media:title>
		</media:content>
	</item>
	</channel>
</rss>
