<?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>Tewha &#187; Articles</title>
	<atom:link href="http://tewha.net/category/articles/feed/" rel="self" type="application/rss+xml" />
	<link>http://tewha.net</link>
	<description>Links and writings on software development, mostly for iPhone and Mac OS X.</description>
	<lastBuildDate>Sun, 07 Mar 2010 22:57:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Sorry, but accepting Flash is potentially devastating to me</title>
		<link>http://tewha.net/2010/03/sorry-but-accepting-flash-is-potentially-devastating-to-me/</link>
		<comments>http://tewha.net/2010/03/sorry-but-accepting-flash-is-potentially-devastating-to-me/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 09:53:41 +0000</pubDate>
		<dc:creator>Steven Fisher</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Adobe Flash]]></category>
		<category><![CDATA[advertising]]></category>
		<category><![CDATA[Ars Technica]]></category>
		<category><![CDATA[bad ideas]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://tewha.net/?p=1103</guid>
		<description><![CDATA[Ars Technica Why Ad Blocking is devastating to the sites you love:
If you read a site and care about its well being, then you should not block ads or you subscribe to sites like Ars that offer ads-free versions of the site. If a site has advertising you dont agree with, dont go there. I think it is [...]]]></description>
			<content:encoded><![CDATA[<p>Ars Technica <a href="http://arstechnica.com/business/news/2010/03/why-ad-blocking-is-devastating-to-the-sites-you-love.ars">Why Ad Blocking is devastating to the sites you love</a>:</p>
<blockquote><p>If you read a site and care about its well being, then you should not block ads or you subscribe to sites like Ars that offer ads-free versions of the site. If a site has advertising you dont agree with, dont go there. I think it is far better to vote with page views than to show up and consume resources without giving anything in return.</p></blockquote>
<p>Let's be clear here: I don't run an ad blocker. I do run a <a href="http://www.adobe.com/products/flashplayer/">Flash</a> blocker, because <em>Flash</em> is unstable and insecure. And no, I will not white-list you to let you load Flash automatically.</p>
<p>And before you ask, you can't have my root password either.</p>
<p>I also don't keep a list of sites I'm not welcomed at. For the half dozen times a year I read a story on Ars (at most), I'm not going to feel guilty either.</p>
<p>Look, in the comments you have admitted you don't control the content of the Flash:</p>
<blockquote><p>We don't allow ads with non-user initiated sound. So unless you interact with the ad you shouldn't hear a thing. If you ever do then let us know so we can fix it/nuke it.</p></blockquote>
<p>If ads make sound uninvited, <em>tell you</em>?!? <strong>Are you serious?</strong> What if they use some new Flash exploit to root around and steal my private key, or otherwise execute <a href="http://www.adobe.com/support/security/bulletins/apsb09-01.html">arbitrary code</a> on my computer?</p>
<p>Should I tell you then, too?</p>
<p>The first step to getting on my white list is to write your own Flash, not just serve someone else's. Taking people's security that cavalierly probably should be criminal.</p>
<p>You can't just say "Oh, that's on Adobe." By now you know <a href="http://secunia.com/advisories/product/20166/?task=statistics">what an insecure mess Flash is</a>.</p>
<p>If you serve me HTML ads, I'll be happy to view them. I'm not sure if you've heard, but it turns out that you can do <a href="http://html5demos.com/">a lot of cool things with HTML</a>.</p>
<p>Also I just checked, and Javascript <a href="http://www.adobe.com/products/flashplayer/download/detection_kit/">can (indirectly) detect my Flash blocker</a>. There's no reason you should try to blame users like me rather than take the responsibility on yourself. The difference between my Mac and an iPhone is that you're able to detect the latter without much effort, but the former would take a little more effort on your part.</p>
<p>Look, I'm sorry I cost you a fraction of a penny. But the potential pain for me in choosing to run Flash is far, far greater. And if you really cared about your users, you'd know that and have moved on from Flash already. Don't try to lay a guilt trip <em>on me</em>!</p>
<p>I'll see you in six months. Not intentionally, that'll just be the next time I have reason to visit Ars. Maybe you'll have this sorted out by then.</p>
]]></content:encoded>
			<wfw:commentRss>http://tewha.net/2010/03/sorry-but-accepting-flash-is-potentially-devastating-to-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Changes to come</title>
		<link>http://tewha.net/2010/02/changes-to-come/</link>
		<comments>http://tewha.net/2010/02/changes-to-come/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 08:19:22 +0000</pubDate>
		<dc:creator>Steven Fisher</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[meta]]></category>

		<guid isPermaLink="false">http://tewha.net/?p=1101</guid>
		<description><![CDATA[What to expect around here:

Presentation

Helvetica Neue. Because no other font comes close.
A streamlined and less boxy design.
Removal of side bar. Most of its functionality will be merged into the footer, and the search into the header.


Content:

More frequent posts, as I attempt to kill my fear of sucking by doing so more often.
More focus on iPhone [...]]]></description>
			<content:encoded><![CDATA[<p>What to expect around here:</p>
<ul>
<li>Presentation
<ul>
<li>Helvetica Neue. Because no other font comes close.</li>
<li>A streamlined and less boxy design.</li>
<li>Removal of side bar. Most of its functionality will be merged into the footer, and the search into the header.</li>
</ul>
</li>
<li>Content:
<ul>
<li>More frequent posts, as I attempt to kill my fear of sucking by doing so more often.</li>
<li>More focus on iPhone and Mac development.</li>
<li>Less focus on Windows development, since I don't have to do it anymore.</li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://tewha.net/2010/02/changes-to-come/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A one day project</title>
		<link>http://tewha.net/2010/02/a-one-day-project/</link>
		<comments>http://tewha.net/2010/02/a-one-day-project/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 07:39:35 +0000</pubDate>
		<dc:creator>Steven Fisher</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[App Store]]></category>
		<category><![CDATA[do it]]></category>
		<category><![CDATA[iPhone Development]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://tewha.net/?p=1097</guid>
		<description><![CDATA[I started work today on an iPhone project with a friend. I figured it would take only a day to get to a reasonable 1.0. I've only put in about a half day on it so far, but at this point I'm pretty sure it's actually a two day project.
Looked at one way, that's a [...]]]></description>
			<content:encoded><![CDATA[<p>I started work today on an iPhone project with a friend. I figured it would take only a day to get to a reasonable 1.0. I've only put in about a half day on it so far, but at this point I'm pretty sure it's actually a two day project.</p>
<p>Looked at one way, that's a 200% estimation overflow. But more realistically, it means it was pretty small and I tackled it in the wrong way. I had to refactor some code early that I left alone for too long. I should've written in the right way to begin with, and I should have realized it was wrong sooner, and I should have stopped trying to make it work.</p>
<p>More pragmatically, maybe I should have known better. But, of course, I didn't. And that's okay! I know better now.</p>
<p>What's my point in posting this?</p>
<p>Mostly, it's this: <strong>iPhone development isn't nearly as hard as I've made it out to be</strong>. Useful applications can actually be quite small and still be useful. Simple things are simple. When they're not simple, it's time to fix something.</p>
<p>I'll post a link here when I finish the project. It'll be a bit before I can devote another day to it. But I'm excited by its usefulness, its simplicity, and the idea of having an app in the App Store of my own.</p>
]]></content:encoded>
			<wfw:commentRss>http://tewha.net/2010/02/a-one-day-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learning a new programming language</title>
		<link>http://tewha.net/2009/10/learning-a-new-programming-language/</link>
		<comments>http://tewha.net/2009/10/learning-a-new-programming-language/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 17:05:21 +0000</pubDate>
		<dc:creator>Steven Fisher</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://tewha.net/?p=1077</guid>
		<description><![CDATA[It took me a while to learn Objective-C.
I started at the most basic level, wondering at the language. What are these brackets? What's with the @ signs? What's the difference between a - and a +? These aren't hard things to learn, but understanding the reasoning behind them helps. And then there's a point where [...]]]></description>
			<content:encoded><![CDATA[<p>It took me a while to learn Objective-C.</p>
<p>I started at the most basic level, wondering at the language. What are these brackets? What's with the @ signs? What's the difference between a - and a +? These aren't hard things to learn, but understanding the reasoning behind them helps. And then there's a point where it suddenly makes sense.</p>
<p>But the framework was confusing. How do I do this? Though I was less confused, this one isn't solved directly. I became competent. And I started to ask the best question: "Why?"</p>
<p>The patterns were still confusing. Why does this work this way? What's the purpose of this? Why is this done, but not this other thing?</p>
<p>And then there was a point where the patterns became obvious. More, the pattern in the patterns became obvious to me. And now, I look to find more examples of patterns, and patterns of patterns, to better build my knowledge.</p>
<p>It took me a while to get here, and it's the same for every language. I'm feeling pretty confident about Objective-C now.</p>
<p>Back on the first day, I was confused and lost.</p>
]]></content:encoded>
			<wfw:commentRss>http://tewha.net/2009/10/learning-a-new-programming-language/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The secret to enjoying Xcode</title>
		<link>http://tewha.net/2009/10/the-secret-to-enjoying-xcode/</link>
		<comments>http://tewha.net/2009/10/the-secret-to-enjoying-xcode/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 16:22:09 +0000</pubDate>
		<dc:creator>Steven Fisher</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Customization]]></category>
		<category><![CDATA[Pain reduction]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://tewha.net/?p=1071</guid>
		<description><![CDATA[One of the things that made me like Xcode more and become more efficient with it is realizing that while all coders are insane, me and Xcode's designers are insane in different ways.
By that, I mean that aside from the standard keyboard shortcuts (Save, Copy... that sort of thing), none of the keyboard shortcuts made [...]]]></description>
			<content:encoded><![CDATA[<p>One of the things that made me like Xcode more and become more efficient with it is realizing that while all coders are insane, me and Xcode's designers are <em>insane in different ways</em>.</p>
<p>By that, I mean that aside from the standard keyboard shortcuts (Save, Copy... that sort of thing), none of the keyboard shortcuts made sense to me.</p>
<p>So I duplicated one of the keyboard shortcut profiles and deleted most of the keyboard bindings. I was brutal with it — if the combination didn't make sense to me OR it was something I'd rarely use it was removed. Then I added keyboard shortcuts that I needed. By using about an hour to customize these settings, I ended up having keyboard shortcuts that I fully understood and rolled off my fingertips.</p>
<p>At this point — and this is where it became a useful exercise — I added my <code>~/Library/Application Support/Xcode</code> to version control so I could easily sync it between computers.  So when I find something that isn't quite working out for me, I make a change and propagate it to my other system.</p>
<p>Am I going to share what I ended up with? No, because that's not the point of this. Rather, I want to point out a simple fact of Xcode: <strong>Xcode will adapt to how you want to use it, and if you feel like you're suffering at all with it you should spend the time it to takes to make it enjoyable to use.</strong></p>
<p>And when someone tells me I can do something with a particular keyboard shortcut, I switch back to the defaults and see what it's bound to.</p>
]]></content:encoded>
			<wfw:commentRss>http://tewha.net/2009/10/the-secret-to-enjoying-xcode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iTunes zoom behavior</title>
		<link>http://tewha.net/2009/09/itunes-zoom-behavior/</link>
		<comments>http://tewha.net/2009/09/itunes-zoom-behavior/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 17:46:26 +0000</pubDate>
		<dc:creator>Steven Fisher</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[itunes]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[User interface]]></category>

		<guid isPermaLink="false">http://tewha.net/?p=1067</guid>
		<description><![CDATA[iTunes prior to 9.0 used a click on the zoom widget to convert to the mini player, leaving people like me who actually like to zoom a window option-clicking it.
iTunes 9.0 finally fixed this. A click on the zoom widget actually zoomed the window!
iTunes 9.0.1 changed it back to the old behavior. Many people were [...]]]></description>
			<content:encoded><![CDATA[<p>iTunes prior to 9.0 used a click on the zoom widget to convert to the mini player, leaving people like me who actually like to zoom a window option-clicking it.</p>
<p>iTunes 9.0 finally fixed this. A click on the zoom widget actually zoomed the window!</p>
<p>iTunes 9.0.1 changed it back to the old behavior. Many people were happy, I imagine. But people who wanted to zoom iTunes windows (or, I imagine, valued standard behavior) were left sad.</p>
<p>It turns out you can get the click-to-zoom behavior back:</p>
<p><code>defaults write com.apple.iTunes zoom-to-window -bool true</code></p>
<p>Tip of the hat to <a href="http://twitter.com/zadr ">zadr</a> on Twitter for <a href="http://twitter.com/zadr/status/4300874028">this tweet</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://tewha.net/2009/09/itunes-zoom-behavior/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Minimized iTunes player</title>
		<link>http://tewha.net/2009/09/minimized-itunes-player/</link>
		<comments>http://tewha.net/2009/09/minimized-itunes-player/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 18:26:26 +0000</pubDate>
		<dc:creator>Steven Fisher</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[AppleScript]]></category>
		<category><![CDATA[itunes]]></category>

		<guid isPermaLink="false">http://tewha.net/?p=1064</guid>
		<description><![CDATA[Paste this into AppleScript Editor:

tell application "iTunes"

	repeat with b in browser windows

		set the minimized of b to true

	end repeat

end tell

Save it in ~/Library/Scripts. And while you're in AppleScript Editor, turn on Show Script menu in menu bar and Show Computer scripts. Now you have a command to show iTunes's mini player at any time.
If you've [...]]]></description>
			<content:encoded><![CDATA[<p>Paste this into AppleScript Editor:</p>
<p><code>
<pre>tell application "iTunes"

	repeat with b in browser windows

		set the minimized of b to true

	end repeat

end tell</pre>
<p></code></p>
<p>Save it in ~/Library/Scripts. And while you're in AppleScript Editor, turn on <strong>Show Script menu in menu bar</strong> and <strong>Show Computer scripts</strong>. Now you have a command to show iTunes's mini player at any time.</p>
<p>If you've got a good way to launch AppleScripts, you can install it there, too.</p>
<p><strong>Update:</strong> Apple has changed this back in iTunes 9.0.1. See <a href="http://tewha.net/2009/09/itunes-zoom-behavior/">iTunes zoom behavior</a> if you liked the iTunes 9.0 way.</p>
]]></content:encoded>
			<wfw:commentRss>http://tewha.net/2009/09/minimized-itunes-player/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On skins and plugins</title>
		<link>http://tewha.net/2009/08/on-skins-and-plugins/</link>
		<comments>http://tewha.net/2009/08/on-skins-and-plugins/#comments</comments>
		<pubDate>Sun, 16 Aug 2009 07:38:10 +0000</pubDate>
		<dc:creator>Steven Fisher</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[rant]]></category>
		<category><![CDATA[skins]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[themes]]></category>

		<guid isPermaLink="false">http://tewha.net/?p=820</guid>
		<description><![CDATA[I started this post over six months ago, but never quite got around to finishing it. It might never be finished. But this is a thorn to me, so I'm just going to post it as is.
Should your new application support skins?
Probably not. Skins are often a programmer's way of saying "Oh, I don't do [...]]]></description>
			<content:encoded><![CDATA[<p>I started this post over six months ago, but never quite got around to finishing it. It might never be finished. But this is a thorn to me, so I'm just going to post it as is.</p>
<p>Should your new application support skins?</p>
<p>Probably not. Skins are often a programmer's way of saying "Oh, I don't do UI. We'll let someone else get it right." Only nobody ever does, at least not in your product. Your UI just isn't as compelling <a href="http://www.codinghorror.com/blog/archives/000789.html">as the one it's replacing</a>.</p>
<p>The corollary to this is that if lots of people are demanding skins, it means your UI sucks. Once you add skins, you'll never be rid of those skins, and you won't have fixed your application either.</p>
<p><em>You'd probably do better to fix your application's appearance and behavior.</em></p>
<p>Now, should you do a custom appearance?</p>
<p>If you're planning a completely custom appearance for your applications, odds are it will suck. Unless you have artists that are beyond simply competent, but brilliant, you'll probably fail.</p>
<p>First, you need a UI that looks and feels good. Secondly, it probably needs to fit in with the native platform. If you're planning a full screen game, it's fine to not fit in. But if you're building a Windows-based BIOS updater, that custom UI that you think looks so amazing? The truth is, it <a href="http://support.asus.com/technicaldocuments/technicaldocuments_content.aspx?no=714">looks like complete shit</a>.</p>
<p><em>You're better off fitting custom UI into the OS rather than changing your whole application to fit them.</em></p>
<p>Now, finally: What about plugins?</p>
<p>This one is a little less clear. There's great reasons to do plugins. Integration with another system (whether technical such as a web site or social such as particular requirements for reporting) is a good one.</p>
<p>But you know what isn't a great reason? Making your product a <em>platform</em>. Do you want to be a product people use, or a platform people struggle with?</p>
<p>Firefox's plugins make me flinch. They're usually poor quality, craptacular tools that lunge for a particular nugget of a good idea and fall flat on their faces a few yards away from it. There are a few that are interesting, but they'd <a href="https://addons.mozilla.org/en-US/firefox/addon/1843">benefit from being rolled in</a>, or being a <a href="https://addons.mozilla.org/en-US/firefox/addon/5817">separate stand-along product</a> on their own.</p>
<p>Pick your features carefully. 37signals didn't become popular by picking an extensive list of features or allowing people to write their own features. Instead, they built something they wanted to use. And they're not alone. There are a few things I'd love to see (<a href="http://daringfireball.net/projects/markdown/">MarkDown</a> instead of <a href="http://textile.thresholdstate.com/">Textile</a>, for instance), but even if a hypothetical plugin system could add these things, they'd be overwhelmed by the layer of suck.</p>
<p><em>Before you build a plugin architecture, put the effort into your application.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://tewha.net/2009/08/on-skins-and-plugins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xcode and iPhone OS 3.0.1</title>
		<link>http://tewha.net/2009/07/xcode-and-iphone-os-3-0-1/</link>
		<comments>http://tewha.net/2009/07/xcode-and-iphone-os-3-0-1/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 18:52:18 +0000</pubDate>
		<dc:creator>Steven Fisher</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[iPhone OS]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://tewha.net/?p=1009</guid>
		<description><![CDATA[To get Xcode 3.1.3 working with iPhone OS 3.0.1, you'll need to teach Xcode how to target iPhone OS 3.0.1.
Xcode will automatically recognize iPhone OS 3.0.1 and look for a new SDK at a set path. The problem is that SDK doesn't exist. The good part is that the iPhone OS 3.0 SDK works perfectly [...]]]></description>
			<content:encoded><![CDATA[<p>To get Xcode 3.1.3 working with iPhone OS 3.0.1, you'll need to teach Xcode how to target iPhone OS 3.0.1.</p>
<p>Xcode will automatically recognize iPhone OS 3.0.1 and look for a new SDK at a set path. The problem is that SDK doesn't exist. The good part is that the iPhone OS 3.0 SDK works perfectly for developing 3.0.1. The only apparent change is the SMS fix.</p>
<p>Assuming you've installed to /Developer, the iPhone OS 3.0 SDK is here:</p>
<p><code>/Developer/Platforms/iPhoneOS.platform/DeviceSupport/3.0 (7A341)</code></p>
<p>When using Xcode with iPhone OS 3.0.1, Xcode looks for the iPhone OS 3.0.1 SDK here:</p>
<p><code>/Developer/Platforms/iPhoneOS.platform/DeviceSupport/3.0.1</code></p>
<p>The trick, then, is to build a symbolic link that connects what Xcode is looking for with what it needs to find.</p>
<p>So what do you do? Assuming you've installed Xcode in the standard location, this is a Terminal command to fix the problem:</p>
<p><code>ln -s /Developer/Platforms/iPhoneOS.platform/DeviceSupport\</p>
<p>/3.0\ \(7A341\) /Developer/Platforms/iPhoneOS.platform/\</p>
<p>DeviceSupport/3.0.1</code></p>
<p>(I've split this into three lines to make it easier to copy and paste with the \ line continuation character.)</p>
<p>This will not add a SDK to Xcode's list, it will just teach Xcode to map your device to the 3.0 SDK.</p>
<p>A few other tips:</p>
<ul>
<li>If you still can't debug restarting your iPhone may help. Most of the iPhones I've tried to debug on, I've had to restart first.</li>
<li>If you get an error regarding code signing, try downloading your provisioning profile again and re-installing it. Also, select it again in your build settings.</li>
</ul>
<p>Based on information from <a href="http://developer.apple.com/iphone/download.action?path=/iphone/iphone_sdk_3.0__final/iphone_os_3.0.1_advisory.pdf">iPhone OS 3.0.1 Advisory</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://tewha.net/2009/07/xcode-and-iphone-os-3-0-1/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>Three20</title>
		<link>http://tewha.net/2009/07/three20/</link>
		<comments>http://tewha.net/2009/07/three20/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 06:12:42 +0000</pubDate>
		<dc:creator>Steven Fisher</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Cocoa Touch]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[iPhone Development]]></category>
		<category><![CDATA[User interface]]></category>

		<guid isPermaLink="false">http://tewha.net/?p=953</guid>
		<description><![CDATA[I downloaded the latest version of Three20 today by Joe Hewitt. I read through some of the code and ran through the included "catalog" demo. If you've used the Facebook application, you've seen early versions of a lot of these controls.
I haven't written any code against it yet and I'm not up to reviewing it, [...]]]></description>
			<content:encoded><![CDATA[<p>I downloaded the latest version of <a href="http://github.com/joehewitt/three20/tree/master">Three20</a> today by <a href="http://joehewitt.com/">Joe Hewitt</a>. I read through some of the code and ran through the included "catalog" demo. If you've used the Facebook application, you've seen early versions of a lot of these controls.</p>
<p>I haven't written any code against it yet and I'm not up to reviewing it, but I will say this: The controls seem to fully work. They're pretty, and the code is clean.</p>
<p>Possibly the piece that will save me the most time going forward is the photo browser. I'm not sure yet when I'll need this, but doing it myself would be a lot of effort at my current knowledge of Cocoa Touch:</p>
<p><img class="aligncenter size-full wp-image-955" title="Three20photos" src="http://tewha.net/wp-content/uploads/2009/07/Three20photos.png" alt="Three20photos" width="414" height="770" />Less visually impressive, maybe, are the buttons:</p>
<p><img class="aligncenter size-full wp-image-954" title="Three20buttons" src="http://tewha.net/wp-content/uploads/2009/07/Three20buttons.png" alt="Three20buttons" width="414" height="770" />But it's worth pointing out that in addition to having more varied styling, these are built on <code>UIView</code> not <code>UIBarItem</code>. These are going to be very useful. I'm not exaggerating when I say they'll make it possible to write better applications.</p>
<p>Three20 also has some tab controls. The top one in particular has a great sideways scroll to it, and I think look and behavior adds up to great UI device, which I can use immediately:</p>
<p><img class="aligncenter size-full wp-image-956" title="Three20tabs" src="http://tewha.net/wp-content/uploads/2009/07/Three20tabs.png" alt="Three20tabs" width="414" height="770" />Next, some styled views:</p>
<p><img class="aligncenter size-full wp-image-957" title="Three20views" src="http://tewha.net/wp-content/uploads/2009/07/Three20views.png" alt="Three20views" width="414" height="770" />Not pictured:</p>
<ul>
<li>Three20 includes "disk" based caching for network images.</li>
<li>Three20 provides easy tools for building a text representation of the application state. This will make restoring state between runs much easier.</li>
</ul>
<p>Some of what's in the library has been rendered unnecessary by iPhone OS 3.0, but there is enough added to make it very compelling. I plan on putting it to use soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://tewha.net/2009/07/three20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
