<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/atom10full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom">

	<title>Planet Cocoa</title>
	
	<link href="http://www.planetcocoa.org/" />
	<id>http://www.planetcocoa.org/atom.xml</id>
	<updated>2008-10-08T10:19:44+00:00</updated>
	<generator uri="http://www.planetplanet.org/">Planet/2.0 +http://www.planetplanet.org</generator>

	<link rel="self" href="http://feeds.feedburner.com/PlanetCocoa" type="application/atom+xml" /><entry xml:lang="en">
		<title type="html">F-Script for Automator</title>
		<link href="http://pmougin.wordpress.com/2008/10/07/f-script-for-automator/" />
		<id>http://pmougin.wordpress.com/?p=614</id>
		<updated>2008-10-07T22:35:20+00:00</updated>
		<content type="html">&lt;div class="snap_preview"&gt;&lt;br /&gt;&lt;p&gt;
Dominique Dutoit has released an F-Script action for Automator. It lets you add custom F-Script code within your Automator processes. You can &lt;a href="https://launchpad.net/runfscript"&gt; get it here&lt;/a&gt;.
&lt;/p&gt;
&lt;div&gt;&lt;img src="http://pmougin.files.wordpress.com/2008/10/fscriptautomator.png?w=527&amp;#038;h=402" border="0" width="527" height="402" /&gt;&lt;/div&gt;
&lt;p&gt;The input of the action (i.e., the output of the previous action) is automatically bound to a variable named &amp;#8220;input&amp;#8221; in the F-Script workspace. Usually, it is an NSArray object. The output of the action is the value of the last F-Script expression executed in the custom F-Script code (automatically boxed in an NSArray if needed).
&lt;/p&gt;
&lt;p&gt;You&amp;#8217;ll need to have the F-Script framework (&lt;a href="http://www.fscript.org/download/FScript_2_0_alpha.zip"&gt;download here&lt;/a&gt;) installed in &lt;code&gt;/Library/Frameworks/&lt;/code&gt; or &lt;code&gt;~/Library/Frameworks/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pmougin.wordpress.com/614/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pmougin.wordpress.com/614/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pmougin.wordpress.com/614/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pmougin.wordpress.com/614/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pmougin.wordpress.com/614/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pmougin.wordpress.com/614/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pmougin.wordpress.com/614/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pmougin.wordpress.com/614/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pmougin.wordpress.com/614/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pmougin.wordpress.com/614/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pmougin.wordpress.com&amp;amp;blog=2047678&amp;amp;post=614&amp;amp;subd=pmougin&amp;amp;ref=&amp;amp;feed=1" /&gt;&lt;/div&gt;</content>
		<author>
			<name>Fun Script</name>
			<uri>http://pmougin.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Fun Script » Cocoa</title>
			<subtitle type="html">Interactive Cocoa</subtitle>
			<link rel="self" href="http://pmougin.wordpress.com/category/cocoa/feed/" />
			<id>http://pmougin.wordpress.com/category/cocoa/feed/</id>
			<updated>2008-10-07T22:49:09+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Survey</title>
		<link href="http://waffle.wootest.net/2008/10/07/survey/" />
		<id>http://waffle.wootest.net/?p=866</id>
		<updated>2008-10-07T19:22:45+00:00</updated>
		<content type="html">&lt;p&gt;This is a survey that I saw on a friend&amp;#8217;s weblog. I won&amp;#8217;t call out the friend to put pressure on his answers to these questions, and I don&amp;#8217;t normally participate in this sort of thing, but I think these are important questions. It hasn&amp;#8217;t gone unnoticed that the survey seems predisposed towards US citizens, but I&amp;#8217;ll answer anyway.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Do you have the guts to answer these questions and re-post as The Controversial Survey?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Lame and self-fulfilling question. Let&amp;#8217;s skip the rile-up showboating. Next!&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Would you do meth if it was legal?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Alcohol is legal and I don&amp;#8217;t even do that. It does nothing for me. What&amp;#8217;s left is what it does &lt;em&gt;to&lt;/em&gt; me, which I could achieve by banging my head against the wall, shredding a few bills and possibly peeing in inappropriate places.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Abortion: for or against it?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;For.&lt;/p&gt;

&lt;p&gt;Some people will do it anyway, and they risk getting sick. Some people won&amp;#8217;t do it anyway, and they risk getting miserable. (Yes, you could also be entirely happy, but if you&amp;#8217;re approaching it from the &amp;#8220;I need an abortion&amp;#8221; angle, I&amp;#8217;m going to assume that all the conditions aren&amp;#8217;t there to help enable that.)&lt;/p&gt;

&lt;p&gt;The important thing about the abortion isn&amp;#8217;t about punishing the woman (for being &amp;#8220;promiscuous&amp;#8221; or &amp;#8220;poorly educated&amp;#8221; or even &amp;#8220;bad at self-defense&amp;#8221; &amp;#8212; are you kidding me?). The important thing is about minimizing suffering. Abortions should only be had when you&amp;#8217;re deeply convinced that you wouldn&amp;#8217;t be able to give the baby a good life; and the decision shouldn&amp;#8217;t ever be taken lightly. &lt;/p&gt;

&lt;p&gt;If you don&amp;#8217;t abort and the baby grows up under bad circumstances, what have you won? The baby is alive but miserable. Don&amp;#8217;t we call this torture? Isn&amp;#8217;t there a phrase called &amp;#8220;wish you&amp;#8217;ve never been born&amp;#8221;? Why is this desirable at all to &lt;em&gt;not&lt;/em&gt; being born?&lt;/p&gt;

&lt;p&gt;And yes, life begins at conception, if you take &amp;#8220;life&amp;#8221; to mean the dictionary definition &amp;#8220;it can die&amp;#8221;. But the part of this where morals are involved is for most of us about human consciousness; sentience. My personal opinion, not by default but by argumentation, is that to prevent suffering in the future where the odds are bad, terminating a person that&amp;#8217;s technically alive but isn&amp;#8217;t yet self-aware is&amp;#8230; it&amp;#8217;s not good. It&amp;#8217;s not even acceptable. It is bad and when faced with the choice, I wouldn&amp;#8217;t blame anyone for choosing either, even though I consider abortion markedly less evil than the alternative. I would however blame anyone even trying to obscure the choice. Hard questions with this level of reprecussions deserve our attention and we need to be able to answer them ourselves if we&amp;#8217;re going to be able to live as free people.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Do you think the world would fail with a female president?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;This question is pointed, suggestive and biased. I think the world would be extremely more likely to fundamentally fail if a person who regarded this a legitimate, interesting, non-insulting question was appointed president. Judgement and ability determines a good president.&lt;/p&gt;

&lt;p&gt;This question also puts too much into interpretation. What does &amp;#8220;fail&amp;#8221; mean? &amp;#8220;Fail&amp;#8221; as in &lt;a href="http://failblog.org/"&gt;&amp;#8220;that wasn&amp;#8217;t really quite smart, was it?&amp;#8221;&lt;/a&gt;? &amp;#8220;Fail&amp;#8221; as in &amp;#8220;please hide under your desk, the nuke&amp;#8217;s coming&amp;#8221;?&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Do you believe in the death penalty?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;That it&amp;#8217;s working as a deterrent? No. That it&amp;#8217;s a practical and expedient way of getting rid of people? Yes, apparently.&lt;/p&gt;

&lt;p&gt;The death penalty seems to exist only in those countries where people demand a blood-drawing ending. This isn&amp;#8217;t normally an environment that&amp;#8217;s conductive to reliable verdicts. The false positive rate is too high.&lt;/p&gt;

&lt;p&gt;A reflection: if some people &lt;em&gt;are&lt;/em&gt; incurable, and if death penalty &lt;em&gt;works&lt;/em&gt; as a deterrent, why not just execute those repeat, hard-hitting, incurable offenders?&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Do you wish marijuana would be legalized already?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Are you for or against premarital sex?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;For. As long as it doesn&amp;#8217;t hurt anyone, I can&amp;#8217;t believe why you&amp;#8217;d want to restrict someone else&amp;#8217;s pleasure. What kind of disadvantaging attitude is that?&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Do you believe in God?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;No. No. No. No. No.&lt;/p&gt;

&lt;p&gt;I will quote Douglas Adams because he put into words exactly how I feel:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If it turns out that I’ve been wrong all along, and there is in fact a god, and if it further turned out that this kind of legalistic, cross-your-fingers-behind-your-back, Clintonian hair-splitting impressed him, then I think I would chose not to worship him anyway.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you need a god to force you to not be a dick, I don&amp;#8217;t think I&amp;#8217;m impressed. If you need to thank someone else when you&amp;#8217;ve accomplished something yourself, I don&amp;#8217;t think I&amp;#8217;m impressed. If your way of dealing with facts that are inconsistent and unbelievable is telling me that I can&amp;#8217;t disprove them instead of trying to find a better answer, and if you believe that&amp;#8217;s an attitude worth spreading, I think you already failed the not-being-a-dick test. &lt;/p&gt;

&lt;p&gt;&lt;b&gt;Do you think same sex marriage should be legalized?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;To the extent that it&amp;#8217;s treating people different legally, yes. (It&amp;#8217;s unfair, but I&amp;#8217;m not invoking that word on account of what some people see as &amp;#8220;waah-waah entitlement&amp;#8221;; I&amp;#8217;m invoking it because the benefits are arbitrarily held back on account of a distinction that really doesn&amp;#8217;t play into many of these benefits at all in that special &amp;#8220;some animals are more equal than others&amp;#8221; way.) I also think that whatever you call that level of partnership is up to you.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Do you think it&amp;#8217;s wrong that so many Hispanics are illegally moving to the USA?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Yes, because I believe it unfair of them to have to evade the authorities to have the enormous privilege to work at Wal-Mart.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;A twelve year old girl has a baby, should she keep it?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Not unless her birthday&amp;#8217;s February 29th.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Should the alcohol age be lowered to eighteen?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;It is 18 here in Sweden, and the problems are worse in the US. The problem&amp;#8217;s fundamentally about culture and attitude.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Should the war in Iraq be called off?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Not overnight, but as fast as possible given that the Iraqi government steps up to solve the problems.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Assisted suicide is illegal: do you agree?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Is assisted suicide euthanasia or is it simply tool use during normal suicide? I don&amp;#8217;t get these paraphrases. Assuming it means euthanasia, a free person must be able to control this aspect of her life like any other. If you can be trusted to have the mental acuity to make the decision that your plug should be pulled when you&amp;#8217;re miserable &lt;em&gt;later&lt;/em&gt; and can&amp;#8217;t say that you&amp;#8217;re miserable, why shouldn&amp;#8217;t you at least be able to state that you think you&amp;#8217;re miserable &lt;em&gt;now&lt;/em&gt;? &lt;/p&gt;

&lt;p&gt;However, the assisting person carries a tremendous responsibility to make sure that no one else is unfairly affected. It seems predator-like to seek people out to do this; I&amp;#8217;m having trouble taking their good intentions seriously if they get a kick out of it one way or the other. If nothing else, the risk of collateral damage is too high.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Do you believe in spanking your children?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;Violence breeds violence. Teaching your children in any way that violence is a persuasive or legitimate way to reason is irresponsible.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Would you burn an American flag for a million dollars?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Yes. Or maybe not; a million dollars isn&amp;#8217;t as much as it once was. American or Canadian?&lt;/p&gt;

&lt;p&gt;I kid. Some of the fundamental values espoused by any civil nation, I wouldn&amp;#8217;t waste for money. But a piece of cloth; no problem. &lt;a href="http://en.wikipedia.org/wiki/A_Taste_of_Freedom"&gt;See also&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;b&gt;Who do you think would make a better president?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Barack Obama.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Are you afraid others will judge you from reading some of your answers?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;I am certain that others will judge me. I am certain that some will disagree and some will agree. I am also certain that some people will behave as if I said &amp;#8220;if you don&amp;#8217;t believe all of this in this order, I&amp;#8217;ll have Chuck Norris kick your teeth in&amp;#8221;. I&amp;#8217;d never do that. I&amp;#8217;d tell Chuck Norris to hold his foot up and your teeth would flee on their own.&lt;/p&gt;

&lt;p&gt;Moreover, I advise that the iPhone software platform must be opened.&lt;/p&gt;</content>
		<author>
			<name>Jesper</name>
			<uri>http://waffle.wootest.net</uri>
		</author>
		<source>
			<title type="html">Waffle</title>
			<link rel="self" href="http://waffle.wootest.net/atom.xml" />
			<id>http://waffle.wootest.net/feed/atom/</id>
			<updated>2008-10-07T19:32:24+00:00</updated>
			<rights type="html">Copyright 2008</rights>
		</source>
	</entry>

	<entry xml:lang="en-US">
		<title type="html">Podcast@Delphi.org Episode 8 Live</title>
		<link href="http://blogs.remobjects.com/blogs/mh/2008/10/07/podcast_delphi_org_episode_8_live" />
		<id>http://blogs.remobjects.com/blogs/xmlsrv/236@http://blogs.remobjects.com/blogs/</id>
		<updated>2008-10-07T11:06:17+00:00</updated>
		<content type="html">&lt;p&gt;I can't believe it's already been two weeks again, but the &lt;i&gt;next&lt;/i&gt; episode of the delphi.org roundtable podcast is up. Get it &lt;a href="http://www.delphi.org/2008/10/episode-8-roundtable-on-best-practices/"&gt;here&lt;/a&gt; at or &lt;a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=288704496"&gt;on iTunes&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In addition to whats becoming "the regular gang" of myself, &lt;a href="http://beensoft.blogspot.com/"&gt;Roland Beenhakker&lt;/a&gt; and &lt;a href="http://www.deltics.co.nz/blog/"&gt;Jolyon Smith&lt;/a&gt;, we had &lt;a href="http://blogs.codegear.com/ao/"&gt;Anders Ohlsson&lt;/a&gt; of CodeGear/Embarcadero join us, and we've chatted about a lot of interesting things, including &amp;ndash; if i remember correctly &amp;ndash; version control, exception handling, the MVC pattern in VCL and Cocoa and a cool new language idea for Delphi proposed by Jolyon.&lt;/p&gt;

&lt;p&gt;I also hope my sound is a bit better this time &amp;ndash; but there's just not much i can do about the 3.5 meter ceiling height in my apartment ;)&lt;/p&gt;

&lt;p&gt;Again, make sure to let us know what you think, in comments here, on Delphi.org or as feedback on iTunes.&lt;/p&gt;

&lt;p&gt;Enjoy,&lt;br /&gt;
marc&lt;/p&gt;</content>
		<author>
			<name>RemObjects Software</name>
			<uri>http://blogs.remobjects.com/blogs/mh</uri>
		</author>
		<source>
			<title type="html">marc hoffman - Category: Mac</title>
			<subtitle type="html">marc hoffman's blog. software development. photography. hdr. remobjects software. chrome. data abstract</subtitle>
			<link rel="self" href="http://blogs.remobjects.com/blogs/xmlsrv/rss2.php?blog=6&amp;cat=53" />
			<id>http://blogs.remobjects.com/blogs/xmlsrv/rss2.php?blog=6&amp;cat=53</id>
			<updated>2008-10-08T10:19:37+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">dynamic</title>
		<link href="http://waffle.wootest.net/2008/10/06/dynamic/" />
		<id>http://waffle.wootest.net/?p=865</id>
		<updated>2008-10-06T21:46:13+00:00</updated>
		<content type="html">&lt;p&gt;It&amp;#8217;s been kicking around for a while, but the first C# 4.0 keyword has been confirmed: &lt;code&gt;dynamic&lt;/code&gt;. (In the &lt;a href="http://jaoo.dk/file?path=/jaoo-aarhus-2008/slides//AndersHejlsberg_WhereAreProgrammingLanguagesGoing.pdf"&gt;slides&lt;/a&gt; to &lt;a href="http://jaoo.dk/presentation/Opening+Keynote%3A+Where+Are+Programming+Languages+Going%3F"&gt;Anders Hejlsberg&amp;#8217;s &amp;#8220;Where Are Programming Languages Going?&amp;#8221; keynote at JAOO&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;The code sample presented is this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;dynamic calc = GetCalculator(); 
int sum = calc.Add(10, 20);
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The slide presents &lt;code&gt;calc&lt;/code&gt; as being &amp;#8220;&lt;em&gt;statically&lt;/em&gt; typed to be dynamic&amp;#8221;, the second row&amp;#8217;s assignment as being a &amp;#8220;dynamic conversion [to &lt;code&gt;int&lt;/code&gt;]&amp;#8221; and involving a &amp;#8220;dynamic method invocation&amp;#8221;. I can step to most of that. The parts that worry me are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The &lt;code&gt;var&lt;/code&gt; keyword and anonymous types worked perfectly with the existing type systems &amp;#8212; the types exist and they are reproducibly the same at compile-time unless you change the initial assignment, you just can&amp;#8217;t name them. Dynamism, on the other hand&amp;#8230; What does &lt;code&gt;dynamic calc; var type = typeof(calc);&lt;/code&gt; return?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Can you make methods that pass &lt;code&gt;dynamic&lt;/code&gt; parameters? Can you make a generic class with &lt;code&gt;dynamic&lt;/code&gt; parameters? (If not, are you just supposed to stuff these into &lt;code&gt;ArrayList&lt;/code&gt;s or &lt;code&gt;List&amp;lt;object&amp;gt;&lt;/code&gt;s.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Consider a dynamic method that returns an array of two objects, both of distinct types. Chain the method call to an extension method on &lt;code&gt;IEnumerable&amp;lt;T&amp;gt;&lt;/code&gt; that returns either the first or last object randomly &amp;#8212; what type is a variable that calls this method? If you were to call this again, would the variable type change?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Can you write code that calls plain old CLR objects using &lt;code&gt;dynamic&lt;/code&gt;? &amp;#8212; crippling the code of everything that&amp;#8217;s &lt;em&gt;useful&lt;/em&gt; and &lt;em&gt;efficient&lt;/em&gt;, sure, but avoiding a rift in the type system.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The big question is eventually &amp;#8220;is this a compile-time alias (like &lt;code&gt;var&lt;/code&gt;) or something that delivers a deeper change (&lt;a href="http://jcp.org/en/jsr/detail?id=292"&gt;&lt;code&gt;invokedynamic&lt;/code&gt;-like&lt;/a&gt;) to the CLR?&amp;#8221; My guess is that the usage suggests a generated interface. For the code sample above, there might be something like &amp;#8212; and at any rate this might be what the IntelliSense store needs to remember:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;interface &amp;lt;&amp;gt;_GeneratedDynamicInterface { int Add(int a, int b); }
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;(The &lt;code&gt;int&lt;/code&gt; parameter types are simply because integer literals are 32-bit integers if they don&amp;#8217;t exceed the range or carry suffixes like &amp;#8216;u&amp;#8217; or &amp;#8216;L&amp;#8217;.)&lt;/p&gt;

&lt;p&gt;Meanwhile, other parts of the slides suggests that it&amp;#8217;s just going to wind up as the same thing rewritten in reflection calls (to things like &lt;code&gt;InvokeMethod&lt;/code&gt;, only resolved a lot more resolutely thanks to the information the compiler can deduce in the same way that it finds the correct overloads for, uh, non-dynamic method invocation).&lt;/p&gt;

&lt;p&gt;I have absolutely no idea how it&amp;#8217;s going to work, though. It&amp;#8217;s going to be very interesting to find out.&lt;/p&gt;

&lt;p&gt;Moreover, I advise that the iPhone software platform must be opened.&lt;/p&gt;</content>
		<author>
			<name>Jesper</name>
			<uri>http://waffle.wootest.net</uri>
		</author>
		<source>
			<title type="html">Waffle</title>
			<link rel="self" href="http://waffle.wootest.net/atom.xml" />
			<id>http://waffle.wootest.net/feed/atom/</id>
			<updated>2008-10-07T19:32:24+00:00</updated>
			<rights type="html">Copyright 2008</rights>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">CocoaHeads München</title>
		<link href="http://www.zathras.de/angelweb/blog-cocoaheads-munich.htm" />
		<id>http://www.zathras.de/angelweb/blog-cocoaheads-munich.htm</id>
		<updated>2008-10-06T17:49:04+00:00</updated>
		<content type="html">Ich habe gerade erfahren, dass eine  CocoaHeads-Gruppe in München  in der Planung ist. Treffen sind jeden zweiten Donnerstag im Monat also ist diesen Donnerstag das erste Treffen. Da gehe ich doch glatt mal hin. Würde mich freuen, die von Euch Mac-Programmierern, die auch im Raum München sind, dort zu treffen!</content>
		<author>
			<name>M. Uli Kusterer</name>
			<email>witness.of.teachtext@gmx.net</email>
			<uri>http://www.zathras.de/angelweb/</uri>
		</author>
		<source>
			<title type="html">Zathras.de - Uli's most useless blog in the World</title>
			<subtitle type="html">Uli Kusterer's Blog.</subtitle>
			<link rel="self" href="http://www.zathras.de/angelweb/BlogRSSFeed.rss" />
			<id>http://www.zathras.de/angelweb/BlogRSSFeed.rss</id>
			<updated>2008-10-08T10:19:15+00:00</updated>
			<rights type="html">Copyright 2004 by M. Uli Kusterer</rights>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">SseCGSConvertXXXX8888TransposePermute crash</title>
		<link href="http://parmanoir.com/SseCGSConvertXXXX8888TransposePermute_crash" />
		<id>http://parmanoir.com/SseCGSConvertXXXX8888TransposePermute_crash</id>
		<updated>2008-10-06T12:50:27+00:00</updated>
		<content type="html">&lt;p&gt;When getting a &lt;code&gt;CGImage&lt;/code&gt; via &lt;code&gt;[myNSBitmapImageRep CGImage]&lt;/code&gt; to feed a &lt;code&gt;CALayer&lt;/code&gt;, Core Animation may crash as detailed here : &lt;a href="http://lists.apple.com/archives/cocoa-dev/2008/Jan/msg01468.html"&gt; Changing CALayer's contents too rapidly causes CoreAnimation to implode&lt;/a&gt;. The given solution is to keep &lt;code&gt; myNSBitmapImageRep&lt;/code&gt; around, retaining it.&lt;br /&gt;&lt;br /&gt;
&lt;p&gt;Another workaround is to render the bitmap &lt;i&gt;now&lt;/i&gt; : after creating your layer and setting its contents , use &lt;code&gt;[CATransaction commit]&lt;/code&gt; and CA will draw it right away. CA will then display everything correctly, and you can forget about &lt;code&gt;myNSBitmapImageRep&lt;/code&gt;.
&lt;/p&gt;
&lt;/p&gt;</content>
		<author>
			<name>Parmanoir</name>
			<uri>http://parmanoir.com/</uri>
		</author>
		<source>
			<title type="html">Parmanoir</title>
			<subtitle type="html">Parmanoir</subtitle>
			<link rel="self" href="http://www.parmanoir.com/Parmanoir.rss" />
			<id>http://www.parmanoir.com/Parmanoir.rss</id>
			<updated>2008-10-08T10:19:39+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Obama &amp;#8216;08 talk @ CocoaHeads Portland on Wednesday 8th October</title>
		<link href="http://feeds.feedburner.com/~r/toxicsoftwarecom/~3/412762581/" />
		<id>http://toxicsoftware.com/?p=387</id>
		<updated>2008-10-06T12:45:15+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href="http://raven.me/2008/10/02/obama-08-for-iphone/"&gt;Raven Zachary&lt;/a&gt; and myself are going to be at the &lt;a href="http://upcoming.yahoo.com/event/1165327"&gt;Wednesday Oct. 8&lt;/a&gt; meeting of &lt;a href="http://cocoaheads.org/us/PortlandOregon/index.html"&gt;Portland Cocoaheads&lt;/a&gt; discussing the &lt;a href="http://www.barackobama.com/iphone/"&gt;Obama &amp;#8216;08 application&lt;/a&gt; and its &lt;a href="http://toxicsoftware.com/obama08/"&gt;development&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/toxicsoftwarecom/~4/412762581" height="1" width="1" /&gt;</content>
		<author>
			<name>schwa</name>
			<uri>http://toxicsoftware.com</uri>
		</author>
		<source>
			<title type="html">toxicsoftware.com</title>
			<subtitle type="html">RANDOMIZE USR 0</subtitle>
			<link rel="self" href="http://toxicsoftware.com/atom.xml" />
			<id>http://toxicsoftware.com/feed/atom/</id>
			<updated>2008-10-07T12:49:02+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">TouchMap</title>
		<link href="http://feeds.feedburner.com/~r/toxicsoftwarecom/~3/412304399/" />
		<id>http://toxicsoftware.com/?p=385</id>
		<updated>2008-10-06T00:31:23+00:00</updated>
		<content type="html">&lt;p&gt;I was going to make a more in-depth posting about &lt;a href="http://toxicsoftware.com/touchmap-teaser/"&gt;TouchMap&lt;/a&gt;, but then something &lt;a href="http://toxicsoftware.com/obama08/"&gt;kind of big&lt;/a&gt; happened. &lt;a href="http://touchcode.googlecode.com/svn/trunk/Experimental/TouchMap/"&gt;The code&lt;/a&gt; is however in the TouchCode google code repository. So have at it. (You&amp;#8217;ll probably want to check out all of TouchCode, TouchMap currently depends on other code within the repository).&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/toxicsoftwarecom/~4/412304399" height="1" width="1" /&gt;</content>
		<author>
			<name>schwa</name>
			<uri>http://toxicsoftware.com</uri>
		</author>
		<source>
			<title type="html">toxicsoftware.com</title>
			<subtitle type="html">RANDOMIZE USR 0</subtitle>
			<link rel="self" href="http://toxicsoftware.com/atom.xml" />
			<id>http://toxicsoftware.com/feed/atom/</id>
			<updated>2008-10-07T12:49:02+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Brick</title>
		<link href="http://waffle.wootest.net/2008/10/05/brick/" />
		<id>http://waffle.wootest.net/?p=864</id>
		<updated>2008-10-05T21:56:26+00:00</updated>
		<content type="html">&lt;p&gt;Please, let the &amp;#8220;Brick&amp;#8221; rumor be the one where they &lt;a href="http://9to5mac.com/macbook-brick"&gt;cut strong endurable laptop enclosures out of hunks of &lt;code&gt;/alumini?um/&lt;/code&gt; with water jets&lt;/a&gt;. Not only is it unspeakably cool, it would reduce the need for infrastructure like screws holding the thing together, which means it&amp;#8217;d be slimmer and more solid.&lt;/p&gt;

&lt;p&gt;Moreover, I advise that the iPhone software platform must be opened.&lt;/p&gt;</content>
		<author>
			<name>Jesper</name>
			<uri>http://waffle.wootest.net</uri>
		</author>
		<source>
			<title type="html">Waffle</title>
			<link rel="self" href="http://waffle.wootest.net/atom.xml" />
			<id>http://waffle.wootest.net/feed/atom/</id>
			<updated>2008-10-07T19:32:24+00:00</updated>
			<rights type="html">Copyright 2008</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Looking for iPhone Software Professionals?</title>
		<link href="http://feeds.feedburner.com/~r/toxicsoftwarecom/~3/411397848/" />
		<id>http://toxicsoftware.com/?p=381</id>
		<updated>2008-10-04T21:38:10+00:00</updated>
		<content type="html">&lt;h2&gt;The problem:&lt;/h2&gt;

&lt;p&gt;I make my living by writing iPhone and Mac OS X for hire. I&amp;#8217;ve been doing this for a while with some level of success. But ever since the iPhone SDK was announced earlier this year I&amp;#8217;ve been getting many, many more work enquiries than I could possibly handle. I&amp;#8217;ve often referred enquiries to friends who I have either worked with in the past or whose work I respect. But this ad-hoc system doesn&amp;#8217;t scale very well.&lt;/p&gt;

&lt;h2&gt;The Solution:&lt;/h2&gt;

&lt;p&gt;To try and make this informal referral approach work I&amp;#8217;ve set up a &lt;em&gt;private&lt;/em&gt; invite only Google Group called &amp;#8220;iPhone Software Professionals&amp;#8221;. Currently this group is made up of a handful (more than 10 less than 1000) software developers who specialise in iPhone development (although I&amp;#8217;d say all are equally capable on Mac OS X). The group is made up of either people I have worked with personally (and would love to work with again) or people whose work has generated such a reputation that I would have no problem recommending them to a potential client.&lt;/p&gt;

&lt;p&gt;The list is currently made up of software developers but I would like to open it open it up to any independent professional involved in the production of iPhone software. This includes, but is not limited to usability experts, graphic designers, quality assurance experts and so on.&lt;/p&gt;

&lt;p&gt;The group will probably remain quite small, with new members invited and referred only by current members. There is no commission or finder&amp;#8217;s fee involved, the group is just an informal group of professionals forwarding work that would otherwise be rejected.&lt;/p&gt;

&lt;h2&gt;Looking for an iPhone Software Professional?&lt;/h2&gt;

&lt;p&gt;So if you have some iPhone software that needs to be written then I think I might be able to find someone to help you out. I might be able to help you myself, but if I have more work than I can handle (which currently is very likely) I&amp;#8217;ll forward your request to the group. Either way contact me directly at &lt;a href="mailto:iphoneswpro@toxicsoftware.com"&gt;iphoneswpro@toxicsoftware.com&lt;/a&gt; and I&amp;#8217;ll try make sure your software gets written.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/toxicsoftwarecom/~4/411397848" height="1" width="1" /&gt;</content>
		<author>
			<name>schwa</name>
			<uri>http://toxicsoftware.com</uri>
		</author>
		<source>
			<title type="html">toxicsoftware.com</title>
			<subtitle type="html">RANDOMIZE USR 0</subtitle>
			<link rel="self" href="http://toxicsoftware.com/atom.xml" />
			<id>http://toxicsoftware.com/feed/atom/</id>
			<updated>2008-10-07T12:49:02+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Announcement: Marcus will be a Panelist at O’Reilly’s iPhoneLive conference</title>
		<link href="http://www.cimgf.com/2008/10/04/announcement-marcus-will-be-a-panelist-at-oreillys-iphonelive-conference/" />
		<id>http://www.cimgf.com/?p=313</id>
		<updated>2008-10-04T16:34:50+00:00</updated>
		<content type="html">&lt;p&gt;Now that the NDA has been lifted we can all finally come out of the closet :)&lt;/p&gt;
&lt;p&gt;If you have not heard, O&amp;#8217;Reilly is hosting a conference on November 18, 2008 to discuss all things iPhone.  I have been invited to attend the conference as a Panelist.&lt;/p&gt;
&lt;p&gt;Please come and join the conference, if nothing else, to heckle me :)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://en.oreilly.com/iphonelive2008/public/content/home"&gt;iPhone Live&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The list of speakers (as opposed to panelists), is quite impressive and definitely worth the trip.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://en.oreilly.com/iphonelive2008/public/schedule/speakers"&gt;Speakers&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>Cocoa Is My Girlfriend</name>
			<uri>http://www.cimgf.com</uri>
		</author>
		<source>
			<title type="html">Cocoa Is My Girlfriend</title>
			<subtitle type="html">Taglines are for Windows programmers</subtitle>
			<link rel="self" href="http://www.cimgf.com/feed/" />
			<id>http://www.cimgf.com/feed/</id>
			<updated>2008-10-04T16:49:46+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Sliding UITextFields around to avoid the keyboard</title>
		<link href="http://cocoawithlove.com/2008/10/sliding-uitextfields-around-to-avoid.html" />
		<id>tag:blogger.com,1999:blog-371408380585915800.post-212898693325410849</id>
		<updated>2008-10-04T17:26:30+00:00</updated>
		<content type="html">&lt;span class="introduction"&gt;&lt;p&gt;It's an iPhone post because I finally can. Here's a good way to slide your view around when editing UITextFields so that they never get trapped under the onscreen keyboard.&lt;/p&gt;
&lt;p&gt;I'll be giving a talk at the &lt;a href="http://brisbanecocoaheads.com/"&gt;Brisbane Cocoaheads&lt;/a&gt; meeting this Monday evening (Oct 6). Come along and heckle.&lt;/p&gt;&lt;/span&gt;

&lt;span class="fullpost"&gt;
&lt;h4&gt;Hidden text fields&lt;/h4&gt;
&lt;p&gt;The iPhone's onscreen keyboard occupies the bottom 216 pixels on screen (140 in landscape mode). That's around half the screen, so if you ever have a text field you want to edit in the bottom half of the screen, it needs to move or it will get covered.&lt;/p&gt;

&lt;p&gt;You can just animate the whole window upwards by the height of the keyboard when editing a text field in the bottom half but this doesn't work well for text fields in the middle (they can get moved too far up).&lt;/p&gt;

&lt;p&gt;Instead, I'm going to show you a method which divides the window as follows:&lt;/p&gt;

&lt;img src="http://lh3.ggpht.com/mattxg/SOXVf2luMvI/AAAAAAAAAOg/mf05sieuxsw/slidingsections.png?imgmax=800" alt="slidingsections.png" border="0" width="213" height="320" /&gt;

&lt;p&gt;Everything in the top section will stay still when edited. Everything in the middle section will animate upwards by a fraction of the keyboard's height (proportional to the field's height within the middle section). Everything in the bottom section will animate upwards by the keyboard's full height.&lt;/p&gt;

&lt;h4&gt;Implementing the delegate methods&lt;/h4&gt;

&lt;blockquote&gt;All of the methods shown here should go into a &lt;em&gt;view controller&lt;/em&gt; probably the "main" view controller for the current screen (i.e. the &lt;span class="monospace"&gt;visibleViewController&lt;/span&gt; of the current &lt;span class="monospace"&gt;UINavigationController&lt;/span&gt;, your &lt;span class="monospace"&gt;RootViewController&lt;/span&gt; or other top-level view controller).&lt;br /&gt;&lt;br /&gt;You will need to make this view controller the &lt;span class="monospace"&gt;delegate&lt;/span&gt; (in Interface Builder) for every &lt;span class="monospace"&gt;UITextField&lt;/span&gt; you want to animate.&lt;/blockquote&gt;

&lt;p&gt;Your view controller will need the following instance variable:&lt;/p&gt;

&lt;pre&gt;CGFloat animatedDistance;&lt;/pre&gt;

&lt;p&gt;The following constants should also be declared somewhere (likely the top of the view controller's implementation file):&lt;/p&gt;

&lt;pre&gt;static const CGFloat KEYBOARD_ANIMATION_DURATION = 0.3;
static const CGFloat MINIMUM_SCROLL_FRACTION = 0.2;
static const CGFloat MAXIMUM_SCROLL_FRACTION = 0.8;
static const CGFloat PORTRAIT_KEYBOARD_HEIGHT = 216;
static const CGFloat LANDSCAPE_KEYBOARD_HEIGHT = 140;&lt;/pre&gt;

&lt;h5&gt;Animate upwards when the text field is selected&lt;/h5&gt;

&lt;p&gt; Get the rects of the text field being edited and the view that we're going to scroll. We convert everything to window coordinates, since they're not necessarily in the same coordinate space.&lt;/p&gt;

&lt;pre&gt;- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    CGRect textFieldRect =
        [self.view.window convertRect:textField.bounds fromView:textField];
    CGRect viewRect =
        [self.view.window convertRect:self.view.bounds fromView:self.view];&lt;/pre&gt;

&lt;p&gt;So now we have the bounds, we need to calculate the fraction between the top and bottom of the middle section for the text field's midline:&lt;/p&gt;

&lt;pre&gt;    CGFloat midline = textFieldRect.origin.y + 0.5 * textFieldRect.size.height;
    CGFloat numerator =
        midline - viewRect.origin.y
            - MINIMUM_SCROLL_FRACTION * viewRect.size.height;
    CGFloat denominator =
        (MAXIMUM_SCROLL_FRACTION - MINIMUM_SCROLL_FRACTION)
            * viewRect.size.height;
    CGFloat heightFraction = numerator / denominator;&lt;/pre&gt;
&lt;p&gt;Clamp this fraction so that the top section is all "0.0" and the bottom section is all "1.0".&lt;/p&gt;
&lt;pre&gt;    if (heightFraction  0.0)
    {
        heightFraction = 0.0;
    }
    else if (heightFraction &gt; 1.0)
    {
        heightFraction = 1.0;
    }&lt;/pre&gt;
&lt;p&gt;Now take this fraction and convert it into an amount to scroll by multiplying by the keyboard height for the current screen orientation. Notice the calls to &lt;span class="monospace"&gt;floor&lt;/span&gt; so that we only scroll by whole pixel amounts.&lt;/p&gt;
    
&lt;pre&gt;    UIInterfaceOrientation orientation =
        [[UIApplication sharedApplication] statusBarOrientation];
    if (orientation == UIInterfaceOrientationPortrait ||
        orientation == UIInterfaceOrientationPortraitUpsideDown)
    {
        animatedDistance = floor(PORTRAIT_KEYBOARD_HEIGHT * heightFraction);
    }
    else
    {
        animatedDistance = floor(LANDSCAPE_KEYBOARD_HEIGHT * heightFraction);
    }&lt;/pre&gt;

&lt;p&gt;Finally, apply the animation. Note the use of &lt;span class="monospace"&gt;setAnimationBeginsFromCurrentState:&lt;/span&gt; &amp;mdash; this will allow a smooth transition to new text field if the user taps on another.&lt;/p&gt;
&lt;pre&gt;    CGRect viewFrame = self.view.frame;
    viewFrame.origin.y -= animatedDistance;
    
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [UIView setAnimationDuration:KEYBOARD_ANIMATION_DURATION];
    
    [self.view setFrame:viewFrame];
    
    [UIView commitAnimations];
}&lt;/pre&gt;

&lt;h5&gt;Animate back again&lt;/h5&gt;

&lt;p&gt;The return animation is far simpler since we've saved the amount to animate.&lt;/p&gt;

&lt;pre&gt;- (void)textFieldDidEndEditing:(UITextField *)textField
{
    CGRect viewFrame = self.view.frame;
    viewFrame.origin.y += animatedDistance;
    
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [UIView setAnimationDuration:KEYBOARD_ANIMATION_DURATION];
    
    [self.view setFrame:viewFrame];
    
    [UIView commitAnimations];
}&lt;/pre&gt;

&lt;h5&gt;Since we're writing the delegate methods...&lt;/h5&gt;

&lt;p&gt;This next method has nothing to do with animation but since we're writing the delegate methods for a &lt;span class="monospace"&gt;UITextField&lt;/span&gt;, this is essential. It dismisses the keyboard when the return/done button is pressed.&lt;/p&gt;

&lt;pre&gt;- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}&lt;/pre&gt;

&lt;h4&gt;Result&lt;/h4&gt;

&lt;p&gt;For a window that looks like this:&lt;/p&gt;

&lt;img src="http://lh4.ggpht.com/mattxg/SOXeCw3bt2I/AAAAAAAAAOk/oplZs_jkDK4/textfieldwindow.png?imgmax=800" alt="textfieldwindow.png" border="0" width="256" height="384" /&gt;

&lt;p&gt;Editing text fields in the top, middle and bottom sections will look like the following:&lt;/p&gt;

&lt;img src="http://lh4.ggpht.com/mattxg/SOXeO2uzW_I/AAAAAAAAAOo/PxQNBmyuJ40/slidingpositions.png?imgmax=800" alt="slidingpositions.png" border="0" width="520" height="256" /&gt;

&lt;p&gt;Notice in particular how the middle section remains in the middle of the visible area after the keyboard appears. This is the primary benefit of the presented approach.&lt;/p&gt;

&lt;/span&gt;</content>
		<author>
			<name>Matt Gallagher</name>
			<email>noreply@blogger.com</email>
			<uri>http://cocoawithlove.com/</uri>
		</author>
		<source>
			<title type="html">Cocoa with Love</title>
			<subtitle type="html">Advanced programming tips, tricks and hacks for Mac development in C/Objective-C and Cocoa.</subtitle>
			<link rel="self" href="http://cocoawithlove.com/feeds/posts/default?alt=rss" />
			<id>tag:blogger.com,1999:blog-371408380585915800</id>
			<updated>2008-10-08T05:49:14+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Acorn free for registered DrawIt 3 users</title>
		<link href="http://gusmueller.com/blog/archives/2008/10/acorn_free_for_registered_drawit_3_users.html" />
		<id>urn:uuid:5df9c07c-840b-4fd5-9602-8a3b1f4ce58e</id>
		<updated>2008-10-03T18:32:20+00:00</updated>
		<content type="html">Pieter Omvlee: &lt;a href="http://pieteromvlee.net/blog/?p=25"&gt;Compensating for Bitmap: Acorn for registered DrawIt users&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="quote"&gt;'''Those of you who read my previous post will know that I removed the bitmap editing from DrawIt Pro. It’s fairly uncommon to remove features, especially if they are this important, but DrawIt’s bitmap editing has never been that good.&lt;br /&gt;
...&lt;br /&gt;
When I decided to remove it, I knew I had to compensate the current users and I think I succeeded here and I’m sure you’ll agree. Some time ago I contacted Flying Meat’s Gus Mueller with a shy attempt at maybe getting a discount for Acorn for current DrawIt users. To my joy he even proposed to give away a free licenses of Acorn to all registered DrawIt users.'''&lt;/div&gt;</content>
		<author>
			<name>Gus Mueller</name>
			<uri>http://www.gusmueller.com/</uri>
		</author>
		<source>
			<title type="html">Gus's weblog, adventures in Flying Meat.</title>
			<link rel="self" href="http://gusmueller.com/blog/atom.xml" />
			<id>http://www.gusmueller.com/blog/</id>
			<updated>2008-10-03T18:32:20+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Helpful</title>
		<link href="http://waffle.wootest.net/2008/10/03/helpful/" />
		<id>http://waffle.wootest.net/?p=863</id>
		<updated>2008-10-03T18:20:04+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href="http://blog.omnigroup.com/2008/10/02/helpify-the-omni-help-emitter/"&gt;Omni Group releases their Python Help Book builder scripts&lt;/a&gt;. Takes OmniOutliner files and emits an Apple Help Book, apparently. Awesome. Huge. It&amp;#8217;s a great move.&lt;/p&gt;

&lt;p&gt;(And I don&amp;#8217;t know if my recent posts had anything to do with tipping the scale, but I assume not; they were about code documentation, not help generation. )&lt;/p&gt;</content>
		<author>
			<name>Jesper</name>
			<uri>http://waffle.wootest.net</uri>
		</author>
		<source>
			<title type="html">Waffle</title>
			<link rel="self" href="http://waffle.wootest.net/atom.xml" />
			<id>http://waffle.wootest.net/feed/atom/</id>
			<updated>2008-10-07T19:32:24+00:00</updated>
			<rights type="html">Copyright 2008</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">The Future of TV</title>
		<link href="http://feeds.feedburner.com/~r/Kupuk/~3/410173806/" />
		<id>http://kupuk.com/?p=576</id>
		<updated>2008-10-03T11:32:33+00:00</updated>
		<content type="html">&lt;p&gt;Is this the &lt;a href="http://current.com/items/89366256_hack_the_debate_2_palin_biden"&gt;future&lt;/a&gt; of TV?  An endless stream of Twitter chatter overlaying everything everyone says?&lt;/p&gt;

&lt;div&gt;&lt;img src="http://kupuk.com/wp-content/debate-twitter.png" alt="debate_twitter.png" border="0" width="488" height="409" /&gt;&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Kupuk?a=Z3CHM"&gt;&lt;img src="http://feeds.feedburner.com/~f/Kupuk?i=Z3CHM" border="0" /&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Kupuk?a=Ofg3m"&gt;&lt;img src="http://feeds.feedburner.com/~f/Kupuk?i=Ofg3m" border="0" /&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Kupuk?a=56XGm"&gt;&lt;img src="http://feeds.feedburner.com/~f/Kupuk?i=56XGm" border="0" /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Kupuk/~4/410173806" height="1" width="1" /&gt;</content>
		<author>
			<name>Kupuk</name>
			<uri>http://kupuk.com</uri>
		</author>
		<source>
			<title type="html">kupuk</title>
			<link rel="self" href="http://feeds.feedburner.com/kupuk" />
			<id>http://feeds.feedburner.com/kupuk</id>
			<updated>2008-10-03T11:49:33+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Obama 08</title>
		<link href="http://feeds.feedburner.com/~r/toxicsoftwarecom/~3/409390220/" />
		<id>http://toxicsoftware.com/?p=376</id>
		<updated>2008-10-03T04:54:41+00:00</updated>
		<content type="html">&lt;p&gt;Well, the &lt;a href="http://www.flickr.com/photos/61285556@N00/2906862481" title="View 'Obama '08 AppStore' on Flickr.com"&gt;
 project&lt;a&gt; I was so &lt;a href="http://toxicsoftware.com/great-excitement/"&gt;excited about&lt;/a&gt; last week has now officially seen the light of day and is on the iPhone AppStore. The project is the &lt;a href="http://www.barackobama.com/iphone/"&gt;Official iPhone application for the Obama/Biden &amp;#8216;08 campaign&lt;/a&gt; (Direct link to &lt;a href="http://toxicsoftware.com/great-excitement/"&gt;AppStore&lt;/a&gt;!).&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The application was created in less than three weeks by an all volunteer team of ten developers, artists, web designers, quality assurance specialists and project managers. You can see the name of everyone who worked on it in the &lt;a href="http://www.flickr.com/photos/61285556@N00/2906830739" title="View 'Obama '08 Credits' on Flickr.com"&gt;credits&lt;/a&gt; of the application itself.&lt;/p&gt;

&lt;p&gt;I started work on the application the day after C4[2] after some very clandestine meetings in Chicago. After about a week of writing TouchRSS code on my own, the project suddenly jumped into high gear, with the indomitable &lt;a href="http://www.atomicwang.org/motherfucker/Index/Index.html"&gt;Mike Lee&lt;/a&gt;, &lt;a href="http://www.otierney.net/"&gt;Tristan O&amp;#8217;Tierney&lt;/a&gt; and incredibly talented &lt;a href="http://www.louiemantia.com/"&gt;Louie Mantia&lt;/a&gt; (responsible for the application&amp;#8217;s amazing and distinctive look).&lt;/p&gt;

&lt;p&gt;I feel really honoured to have worked with such a great team (see &lt;a href="http://raven.me/2008/10/02/obama-08-for-iphone/"&gt;Raven Zachary&amp;#8217;s blog posting&lt;/a&gt; for links to everyone). The project was a sprint and of course suffered from a lot of ups and downs. But I think we managed to create a really great application in a very short space of time.&lt;/p&gt;

&lt;p&gt;Here are some blog postings from the other team members&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.aileenjeffries.com/?p=40"&gt;Aileen Jeffries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.iphonedevcamp.org/2008/10/02/obama-08-iphone-app/"&gt;Dom Sagolla&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://userfirstweb.com/307/announcing-obama-08-iphone-application/"&gt;Jason Grigsby&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://louiemantia.com/blog/?p=31"&gt;Louis Mantia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lyza.com/2008/10/02/obama-iphone-app/"&gt;Lyza Danger Gardner&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.atomicwang.org/alison/"&gt;Mike Lee&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://raven.me/2008/10/02/obama-08-for-iphone/"&gt;Raven Zachary&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Official Links:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.barackobama.com/iphone/"&gt;http://www.barackobama.com/iphone&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=292168926&amp;amp;mt=8"&gt;AppStore Link&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="http://feeds.feedburner.com/~r/toxicsoftwarecom/~4/409390220" height="1" width="1" /&gt;</content>
		<author>
			<name>schwa</name>
			<uri>http://toxicsoftware.com</uri>
		</author>
		<source>
			<title type="html">toxicsoftware.com</title>
			<subtitle type="html">RANDOMIZE USR 0</subtitle>
			<link rel="self" href="http://toxicsoftware.com/atom.xml" />
			<id>http://toxicsoftware.com/feed/atom/</id>
			<updated>2008-10-07T12:49:02+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Alpha 6</title>
		<link href="http://pmougin.wordpress.com/2008/10/02/alpha-6/" />
		<id>http://pmougin.wordpress.com/?p=491</id>
		<updated>2008-10-02T19:38:00+00:00</updated>
		<content type="html">&lt;div class="snap_preview"&gt;&lt;br /&gt;&lt;p&gt;You can now download &lt;a href="http://www.fscript.org/download/FScript_2_0_alpha.zip"&gt;F-Script 2.0 alpha 6&lt;/a&gt;. It contains the latest developments, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Better error detection and reporting when defining new classes&lt;/li&gt;
&lt;li&gt;Support in the runtime for subclassing F-Script classes in Objective-C&lt;/li&gt;
&lt;li&gt;A literal syntax for hexadecimal numbers (finally!). Standard Smalltalk syntax; e.g., &lt;code&gt;16rFF5A&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Support for using the &lt;code&gt;~~&lt;/code&gt; message with &lt;code&gt;nil&lt;/code&gt; as a receiver&lt;/li&gt;
&lt;li&gt;Various internal improvements&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
In addition, there will be a couple of language adjustments in F-Script 2.0, and this alpha contains one of them, as described below.
&lt;/p&gt;
&lt;p&gt;In F-Script 1.x, equality and inequality operators (i.e., &lt;code&gt;=&lt;/code&gt; and &lt;code&gt;&amp;#126;=&lt;/code&gt;) are provided for all objects. They are implemented in a category of NSObject, and rely on the standard Cocoa &lt;code&gt;isEqual:&lt;/code&gt; method to determine equality.&lt;/p&gt;
&lt;p&gt; This is convenient but leads to a small amount of added conceptual complexity in a few situations related to array programming. Since life is better when even the slightest unneeded complexity is taken away, F-Script 2.0 changes this (remember that F-Script integrates array programming and Cocoa together and we want to do it with zero impedance mismatch). In F-Script 2.0, &lt;code&gt;=&lt;/code&gt; and &lt;code&gt;&amp;#126;=&lt;/code&gt; are no longer provided at the NSObject level. The standard  generic method for testing objects equality in Cocoa is &lt;code&gt;isEqual:&lt;/code&gt;, and you can use it with F-Script too.
&lt;/p&gt;
&lt;p&gt;
Of course, just removing &lt;code&gt;=&lt;/code&gt; and &lt;code&gt;&amp;#126;=&lt;/code&gt; and be done with it would horribly break compatibility between F-Script 2.x and code written for F-Script 1.x. In addition, we would really miss these nice operators&amp;#8230;
&lt;p&gt;
Well, don&amp;#8217;t panic. While these operators are no longer provided by default for all objects, they are implemented for a number of objects, such as NSString, NSNumber, NSDate, NSValue, FSBoolean&amp;#8230; This covers the vast majority of current and desirable usage and you can also implement them for your own classes if that make sense.
&lt;/p&gt;
&lt;p&gt;
In addition, F-Script 2.x comes with the magic needed to maintain backward compatibility with existing code in the few remaining cases where your F-Script 1.x code might send &lt;code&gt;=&lt;/code&gt; or &lt;code&gt;&amp;#126;=&lt;/code&gt; messages to objects that relied on the default implementation provided by the NSObject category in F-Script 1.x. In such cases, all will work as usual and F-Script will log a warning suggesting you change your code to use &lt;code&gt;isEqual:&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If you want to, you can turn off this magic backward compatibility system by using the &lt;code&gt;&lt;span class="colored"&gt;MaintainFScript1EqualityOperatorsSemantics&lt;/span&gt;&lt;/code&gt; user default, on an per application basis. For instance, to turn it off for the F-Script application, type the following in the Mac OS X terminal:&lt;/p&gt;
&lt;div class="codebox"&gt;
&lt;pre&gt;&lt;code&gt;
defaults write org.fscript.fscriptapp MaintainFScript1EqualityOperatorsSemantics NO
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;To reactivate it, type: &lt;/p&gt;
&lt;div class="codebox"&gt;
&lt;pre&gt;&lt;code&gt;
defaults write org.fscript.fscriptapp MaintainFScript1EqualityOperatorsSemantics YES
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pmougin.wordpress.com/491/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pmougin.wordpress.com/491/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pmougin.wordpress.com/491/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pmougin.wordpress.com/491/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pmougin.wordpress.com/491/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pmougin.wordpress.com/491/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pmougin.wordpress.com/491/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pmougin.wordpress.com/491/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pmougin.wordpress.com/491/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pmougin.wordpress.com/491/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pmougin.wordpress.com&amp;amp;blog=2047678&amp;amp;post=491&amp;amp;subd=pmougin&amp;amp;ref=&amp;amp;feed=1" /&gt;&lt;/p&gt;&lt;/div&gt;</content>
		<author>
			<name>Fun Script</name>
			<uri>http://pmougin.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Fun Script » Cocoa</title>
			<subtitle type="html">Interactive Cocoa</subtitle>
			<link rel="self" href="http://pmougin.wordpress.com/category/cocoa/feed/" />
			<id>http://pmougin.wordpress.com/category/cocoa/feed/</id>
			<updated>2008-10-07T22:49:09+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Nokia 5800</title>
		<link href="http://waffle.wootest.net/2008/10/02/nokia-5800/" />
		<id>http://waffle.wootest.net/?p=862</id>
		<updated>2008-10-02T19:04:25+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href="http://www.engadget.com/photos/nokia-5800-xpressmusic-hands-on/"&gt;They get it&lt;/a&gt;.&lt;/p&gt;</content>
		<author>
			<name>Jesper</name>
			<uri>http://waffle.wootest.net</uri>
		</author>
		<source>
			<title type="html">Waffle</title>
			<link rel="self" href="http://waffle.wootest.net/atom.xml" />
			<id>http://waffle.wootest.net/feed/atom/</id>
			<updated>2008-10-07T19:32:24+00:00</updated>
			<rights type="html">Copyright 2008</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Buzzword Bingo</title>
		<link href="http://waffle.wootest.net/2008/10/01/buzzword-bingo/" />
		<id>http://waffle.wootest.net/?p=861</id>
		<updated>2008-10-02T17:32:46+00:00</updated>
		<content type="html">&lt;p&gt;Microsoft is running a &lt;a href="http://channel9.msdn.com/posts/VisualStudio/Visual-Studio-Team-System-2010-Week-on-Channel-9/"&gt;feature week&lt;/a&gt; on Channel 9 in honor of Visual Studio Team System 2010.&lt;/p&gt;

&lt;p&gt;I live in Visual Studio at work. I should be excited at at least something. I&amp;#8217;m not.&lt;/p&gt;

&lt;p&gt;Update: &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc817396.aspx"&gt;This is a bit more like it&lt;/a&gt;.&lt;/p&gt;</content>
		<author>
			<name>Jesper</name>
			<uri>http://waffle.wootest.net</uri>
		</author>
		<source>
			<title type="html">Waffle</title>
			<link rel="self" href="http://waffle.wootest.net/atom.xml" />
			<id>http://waffle.wootest.net/feed/atom/</id>
			<updated>2008-10-07T19:32:24+00:00</updated>
			<rights type="html">Copyright 2008</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Logbook for Backpack Journal</title>
		<link href="http://mattgemmell.com/2008/10/02/logbook-for-backpack-journal" />
		<id>http://mattgemmell.com/?p=951</id>
		<updated>2008-10-02T16:37:05+00:00</updated>
		<content type="html">&lt;p&gt;Just a quick note that &lt;a href="http://www.transmissionapps.com/"&gt;Logbook&lt;/a&gt; by Transmissions has been released today. It&amp;#8217;s a client for the &lt;a href="http://www.37signals.com/svn/posts/1040-launch-the-backpack-journal"&gt;Backpack Journal&lt;/a&gt; from 37signals (part of &lt;a href="http://www.backpackit.com/"&gt;Backpack&lt;/a&gt;), and lets you manage your tasks and status right from your Mac OS X menubar.&lt;/p&gt;
&lt;div class="screenshot"&gt;
&lt;a href="http://www.transmissionapps.com/" title="Logbook for Backpack Journal"&gt;&lt;img src="http://mattgemmell.com/images/logbook-screenshot.png" width="343" height="355" alt="Logbook screenshot" /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://instinctivecode.com/"&gt;Instinctive Code&lt;/a&gt; (my OS X/iPhone development persona) is pleased to have been part of the development team for Logbook, providing custom UI work amongst other things.&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;re a Backpack user, be sure to &lt;a href="http://www.transmissionapps.com/"&gt;check it out&lt;/a&gt; - and keep an eye out for future releases from SignalApps to integrate with your favorite other 37signals web apps.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Clarification:&lt;/strong&gt; please contact Transmissions themselves (support at transmissionapps.com) with any enquiries or comments regarding Logbook - I&amp;#8217;m not actually part of the company. :)&lt;/p&gt;</content>
		<author>
			<name>Matt Legend Gemmell</name>
			<uri>http://mattgemmell.com</uri>
		</author>
		<source>
			<title type="html">Matt Legend Gemmell » Development</title>
			<subtitle type="html">Modesty is Lying</subtitle>
			<link rel="self" href="http://mattgemmell.com/category/development/feed/" />
			<id>http://mattgemmell.com/category/development/feed/</id>
			<updated>2008-10-07T11:49:39+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">MGTwitterEngine works on iPhone</title>
		<link href="http://mattgemmell.com/2008/10/02/mgtwitterengine-works-on-iphone" />
		<id>http://mattgemmell.com/?p=947</id>
		<updated>2008-10-02T16:29:02+00:00</updated>
		<content type="html">&lt;p&gt;Now that the iPhone SDK is to be lifted, this is just a brief official announcement that &lt;a href="http://mattgemmell.com/source#mgtwitterengine"&gt;MGTwitterEngine&lt;/a&gt; works on both OS X and on iPhone - as has quietly been the case for quite some time.&lt;/p&gt;
&lt;p&gt;Previously, in order to ensure that MGTwitterEngine did not violate the NDA, iPhone developers needed to change a few constants to valid iPhone SDK values in order to make the code compile for that platform, but this is now thankfully no longer necessary. The &lt;a href="http://svn.cocoasourcecode.com/MGTwitterEngine/README.txt"&gt;ReadMe file&lt;/a&gt; included with the source now makes explicit reference to the iPhone, and restores &lt;a href="http://furbo.org/"&gt;Craig Hockenberry&amp;#8217;s&lt;/a&gt; original notes on linking to libxml on each platform.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m sure you&amp;#8217;d all discovered all this for yourselves already, but it&amp;#8217;s nice to no longer have to obfuscate the code or avoid mentioning a significant benefit - that of being dual-platform. I have some other iPhone code I plan to release soon too, once I get a chance to clean it up a bit, so stay tuned.&lt;/p&gt;</content>
		<author>
			<name>Matt Legend Gemmell</name>
			<uri>http://mattgemmell.com</uri>
		</author>
		<source>
			<title type="html">Matt Legend Gemmell » Development</title>
			<subtitle type="html">Modesty is Lying</subtitle>
			<link rel="self" href="http://mattgemmell.com/category/development/feed/" />
			<id>http://mattgemmell.com/category/development/feed/</id>
			<updated>2008-10-07T11:49:39+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">I’ve Been Macbroken</title>
		<link href="http://www.red-sweater.com/blog/620/ive-been-macbroken" />
		<id>http://www.red-sweater.com/blog/?p=620</id>
		<updated>2008-10-02T16:19:16+00:00</updated>
		<content type="html">&lt;p&gt;I was honored this week to be invited as a guest host on the excellent &lt;a href="http://twit.tv/mbw"&gt;MacBreak Weekly&lt;/a&gt; podcast.&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twit.tv/mbw108"&gt;MacBreak Weekly 108: Pull My iTunes&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
I listen to the show regularly so it was a bit strange to record with the guys I&amp;#8217;m normally listening to passively. Every so often I had to remind myself that I could actually open my mouth and add something to the conversation!
&lt;/p&gt;
&lt;p&gt;
A particularly well-timed (or poorly-timed, depending how you look at it) topic was that of the iPhone developer NDA, which we discussed a bit, carefully tip-toeing around any actual violation of the NDA, which was still in effect when we recorded, but &lt;a href="http://www.red-sweater.com/blog/614/apple-lifts-iphone-developer-nda"&gt;was lifted a day later&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Developer Austin Meyer of &lt;a href="http://www.x-plane.com/"&gt;X-Plane&lt;/a&gt; fame was also on the show, and one of the points we disagreed upon was whether or not it is productive for people outside Apple to present dissenting opinions or otherwise make a fuss about the inner workings of the company.
&lt;/p&gt;
&lt;p&gt;
Austin tended to believe that we should trust Apple to work its magic in secrecy and with autonomy.  I believe those of us on the outside can offer a unique perspective which Apple is itself sometimes blind to. A number of positive changes have happened in the past few years only after the public collectively agreed that Apple was taking the wrong course. It&amp;#8217;s possible that Apple&amp;#8217;s decision-making process has always been completely independent of outside influences, but I prefer to believe that they value the collective wisdom of their customer base, and are at least taking it into consideration as they develop their products and services.
&lt;/p&gt;
&lt;p&gt;
I really appreciate &lt;a href="http://leoville.com/category/blog/"&gt;Leo Laporte&amp;#8217;s&lt;/a&gt; letting me take part in the show this week. If you haven&amp;#8217;t given &lt;a href="http://twit.tv/mbw"&gt;MacBreak Weekly&lt;/a&gt; a try before, this would be a great week to start!&lt;/p&gt;</content>
		<author>
			<name>Red Sweater Blog</name>
			<uri>http://www.red-sweater.com/blog</uri>
		</author>
		<source>
			<title type="html">Red Sweater Blog</title>
			<subtitle type="html">Mac &amp;amp; Technology Writings by Daniel Jalkut</subtitle>
			<link rel="self" href="http://www.red-sweater.com/blog/feed" />
			<id>http://www.red-sweater.com/blog/feed</id>
			<updated>2008-10-08T08:49:28+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Implementing countByEnumeratingWithState:objects:count:</title>
		<link href="http://cocoawithlove.com/2008/05/implementing-countbyenumeratingwithstat.html" />
		<id>tag:blogger.com,1999:blog-371408380585915800.post-3939418815377665972</id>
		<updated>2008-10-02T16:02:22+00:00</updated>
		<content type="html">&lt;span class="introduction"&gt;&lt;p&gt;If you want to use fast enumeration on your own classes, you must implement &lt;span class="monospace"&gt;countByEnumeratingWithState:objects:count:&lt;/span&gt;. Unfortunately, it's a confusing method. Here are two sample implementations that show the steps needed to implement this method in most cases.&lt;/p&gt;&lt;/span&gt;

&lt;span class="fullpost"&gt;
&lt;h4&gt;Some sample NSFastEnumeration implementations&lt;/h4&gt;

&lt;p&gt;You need to implement NSFastEnumeration if you want to use your own classes in the Objective-C 2.0 "&lt;span class="monospace"&gt;for...in&lt;/span&gt;" fast-enumeration language feature.&lt;/p&gt;

&lt;p&gt;The documentation for its only method (&lt;span class="monospace"&gt;countByEnumeratingWithState:objects:count:&lt;/span&gt;) is pretty cryptic and overwhelming &amp;mdash; mostly because the method needs to be flexible and Apple don't want to tell you how to write your code. I have no such qualms and since there aren't many examples on the Internets at the moment I thought I'd show you some easy approaches for implementing it in your own programs.&lt;/p&gt;

&lt;p&gt;There are two different ways to enumerate. The first is where your class already has, or is willing to create, a C array of Objective-C &lt;span class="monospace"&gt;id&lt;/span&gt; values which point to the objects being enumerated. The second is where you don't have this storage and want to use storage passed to you.&lt;/p&gt;

&lt;blockquote&gt;&lt;strong&gt;Warning:&lt;/strong&gt; These examples do not use the &lt;span class="monospace"&gt;mutationsPtr&lt;/span&gt; and are therefore only safe for use with &lt;em&gt;immutable&lt;/em&gt; collections. If the enumerated collection is &lt;em&gt;mutable&lt;/em&gt;, you will need to point &lt;span class="monospace"&gt;mutationsPtr&lt;/span&gt; to an appropriate mutation guard value (normally a mutations count value).&lt;/blockquote&gt;

&lt;h4&gt;First case: already have a C array of storage&lt;/h4&gt;

&lt;p&gt;Our class looks like this:&lt;/p&gt;

&lt;pre&gt;@interface SimpleStringArray : NSObject &amp;lt;NSFastEnumeration&amp;gt;
{
    NSString *stringArray[ARRAY_LENGTH];
}&lt;/pre&gt;

&lt;p&gt;In this case, the implementation of &lt;span class="monospace"&gt;countByEnumeratingWithState:objects:count:&lt;/span&gt; would look like this:&lt;/p&gt;

&lt;pre&gt;- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len
{
    if (state-&gt;state &gt;= ARRAY_LENGTH)
    {
        return 0;
    }

    state-&gt;itemsPtr = stringArray;
    state-&gt;state = ARRAY_LENGTH;
    state-&gt;mutationsPtr = (unsigned long *)self;
    
    return ARRAY_LENGTH;
}&lt;/pre&gt;

&lt;p&gt;Quick explanation:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;we've ignored &lt;span class="monospace"&gt;stackbuf&lt;/span&gt; and &lt;span class="monospace"&gt;count&lt;/span&gt; (because we already have storage)&lt;/li&gt;
&lt;li&gt;as required, we've set &lt;span class="monospace"&gt;state-&gt;state&lt;/span&gt; to a non zero value (the iteration index after the current items are iterated)&lt;/li&gt;
&lt;li&gt;as required, we've set &lt;span class="monospace"&gt;state-&gt;mutationsPtr&lt;/span&gt; to a non zero value (the self pointer since we have no "array has changed" flag that we can point it to)&lt;/li&gt;
&lt;li&gt;we've returned the complete length of the array, so it will all be iterated in one pass (on the second pass, &lt;span class="monospace"&gt;state-&gt;state&lt;/span&gt; will equal ARRAY_LENGTH and we'll return "0", ending the loop)&lt;/li&gt;&lt;/ul&gt;

&lt;h4&gt;Second case: need storage&lt;/h4&gt;

&lt;p&gt;If our class' data is a collection of &lt;span class="monospace"&gt;NSString&lt;/span&gt; objects stored in a list of linearly connected C structs, then we might have no C array value to return.&lt;/p&gt;

&lt;p&gt;Assume our list is declared like this:&lt;/p&gt;

&lt;pre&gt;typedef struct
{
    NSString * stringPtr;
    struct MyList * nextNode;
} MyList;&lt;/pre&gt;

&lt;p&gt;and our class is declared like this:&lt;/p&gt;

&lt;pre&gt;@interface StringList : NSObject &amp;lt;NSFastEnumeration&amp;gt;
{
    MyList * _startOfListNode;
    MyList * _endOfListPlusOneNode;
}&lt;/pre&gt;

&lt;p&gt;This is more complicated example because we need to actually gather the data from the list and store our traversal state between iterations. Here is how it might look:&lt;/p&gt;

&lt;pre&gt;- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len
{
    MyList *currentNode;
    if (state-&gt;state == 0)
    {
        // Set the starting point. _startOfListNode is assumed to be our
        // object's instance variable that points to the start of the list.
        currentNode = _startOfListNode;
    }
    else
    {
        // Subsequent iterations, get the current progress out of state-&gt;state
        currentNode = (struct MyList *)state-&gt;state;
    }
    
    // Accumulate nodes from the list until we reach the object's
    // _endOfListPlusOneNode
    NSUInteger batchCount = 0;
    while (currentNode != _endOfListPlusOneNode &amp;amp;&amp;amp; batchCount  len)
    {
        stackbuf[batchCount] = currentNode-&gt;stringPtr;
        currentNode = currentNode-&gt;nextNode;
        batchCount++;
    }

    state-&gt;state = (unsigned long)currentNode;
    state-&gt;itemsPtr = stackbuf;
    state-&gt;mutationsPtr = (unsigned long *)self;

    return batchCount;
}&lt;/pre&gt;

&lt;p&gt;Explanation of this example:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;We now use &lt;span class="monospace"&gt;stackbuf&lt;/span&gt; to store the data accumulated from the list and we return it in &lt;span class="monospace"&gt;state-&gt;itemsPtr&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;&lt;span class="monospace"&gt;len&lt;/span&gt; is used now because it is the maximum number of objects we can accumulate in &lt;span class="monospace"&gt;stackbuf&lt;/span&gt; each time.&lt;/li&gt;
&lt;li&gt;When executed the first time (when &lt;span class="monospace"&gt;state-&gt;state == 0&lt;/span&gt;), we set the &lt;span class="monospace"&gt;currentNode&lt;/span&gt; to our object's private &lt;span class="monospace"&gt;_startOfListNode&lt;/span&gt; &amp;mdash; that we assume we have correctly set to the start of our list.&lt;/li&gt;
&lt;li&gt;Every other time we are run, &lt;span class="monospace"&gt;state-&gt;state&lt;/span&gt; will hold our &lt;span class="monospace"&gt;currentNode&lt;/span&gt;, saved from the last iteration.&lt;/li&gt;
&lt;li&gt;The fast enumeration will repeatedly invoke this method until we reach a &lt;span class="monospace"&gt;currentNode == _endOfListPlusOneNode&lt;/span&gt; at the end of the list &amp;mdash; remember that &lt;span class="monospace"&gt;state-&gt;state&lt;/span&gt; is not allowed to be nil, which is why we use this non-nil end marker node. If you use a list that ends in nil, then you should detect this and set &lt;span class="monospace"&gt;state-&gt;state&lt;/span&gt; to a special non-nil "end" flag so that you won't get trapped in an infinite loop.&lt;/li&gt;&lt;/ul&gt;

&lt;/span&gt;</content>
		<author>
			<name>Matt Gallagher</name>
			<email>noreply@blogger.com</email>
			<uri>http://cocoawithlove.com/</uri>
		</author>
		<source>
			<title type="html">Cocoa with Love</title>
			<subtitle type="html">Advanced programming tips, tricks and hacks for Mac development in C/Objective-C and Cocoa.</subtitle>
			<link rel="self" href="http://cocoawithlove.com/feeds/posts/default?alt=rss" />
			<id>tag:blogger.com,1999:blog-371408380585915800</id>
			<updated>2008-10-08T05:49:14+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">PSIG 118: Thu Oct 2 2008</title>
		<link href="http://rentzsch.com/psig/118" />
		<id>http://rentzsch.com/psig/118</id>
		<updated>2008-10-02T05:02:42+00:00</updated>
		<content type="html">&lt;dl&gt;	&lt;dt&gt;When:	&lt;dd&gt;Thursday, October 2nd, 2008 @ 7pm 		&lt;dt&gt;Where:	&lt;dd&gt;&lt;a href="http://maps.google.com/maps?q=920+E+Northwest+Highway+60074"&gt;Hotel Indigo&lt;/a&gt; (&lt;a href="http://www.ichotelsgroup.com/hotelmedia/repository/hotelimages/CHIPA/WELCM_EXTR_02_E.jpg"&gt;pic&lt;/a&gt;, &lt;a href="http://maps.google.com/maps?saddr=2121+W+Northwest+Highway+60074&amp;amp;daddr=920+E+Northwest+Highway+60074"&gt;directions&lt;/a&gt; from the &lt;a href="http://metrarail.com/Sched/cnw_nw/arlington_park.shtml"&gt;Arlington Park Metra station&lt;/a&gt;).		&lt;dt&gt;Schedule:	&lt;dd&gt;&lt;b&gt;Show &amp;amp; Tell&lt;/b&gt;	&lt;br /&gt;We'll start out the meeting by going around the table and talking about what we're currently working on or learning about. Handouts are welcome, or bring along your Mac and we'll hook it up to the projector.	&lt;p&gt;&lt;b&gt;Book Reports&lt;/b&gt;	&lt;br /&gt;Bring along the book you're currently reading, or one of your old favorites. Hopefully the book would have some relevance to programming, but we're fairly open-minded. Just give us an overview the book's topic, and what you liked (or disliked) about it.&lt;/p&gt;	&lt;p&gt;&lt;b&gt;Topics&lt;/b&gt;	&lt;br /&gt;Celebrating the &lt;a href="http://www.red-sweater.com/blog/614/apple-lifts-iphone-developer-nda"&gt;death of the iPhone NDA&lt;/a&gt;, &lt;a href="http://www.1821design.com"&gt;Tom Swift&lt;/a&gt; will present "iPhone Development: Zero to Sixty". Tom will walk us through all the steps of creating a new app, including the tricky parts of actually getting it loaded on your iPhone/iPod Touch. Brace yourself, it's a bumpy ride.		&lt;p&gt;&lt;b&gt;Dinner&lt;/b&gt;	&lt;br /&gt;If you want pizza, bring along three dollars and we'll all chip in.		&lt;dt&gt;Looking for Presenters:	&lt;dd&gt;I'm always on the look-out for folks to want to give a talk for a meeting. The talk doesn't need to be long (10 minutes is fine if your topic is small or you just want to tease the group) and you don't need to be an expert (just tell us why you think your topic is cool or your experiences). Toss me an email and I'll assign you a chunk of time.&lt;/dd&gt;&lt;/dt&gt;&lt;/p&gt;&lt;/p&gt;&lt;/dd&gt;&lt;/dt&gt;&lt;/dd&gt;&lt;/dt&gt;&lt;/dd&gt;&lt;/dt&gt;&lt;/dl&gt;</content>
		<author>
			<name>rentzsch.com : tales from the red shed</name>
			<uri>http://rentzsch.com</uri>
		</author>
		<source>
			<title type="html">rentzsch.com: Tales from the Red Shed</title>
			<subtitle type="html">Technical Journal of Jonathan 'Wolf' Rentzsch</subtitle>
			<link rel="self" href="http://rentzsch.com/rss.xml" />
			<id>http://rentzsch.com/rss.xml</id>
			<updated>2008-10-08T10:19:32+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Apple removes the NDA!!</title>
		<link href="http://fi.am/entry/apple-removes-the-nda/" />
		<id>http://fi.am/entry/apple-removes-the-nda/</id>
		<updated>2008-10-01T21:37:27+00:00</updated>
		<content type="html">&lt;p&gt;Apple has just lifted the NDA for released software, so we can now publicly talk about it. Over the last few weeks, I've been writing the iPhone client for &lt;a href="http://bynotes.com"&gt;byNotes&lt;/a&gt;, so I have a good amount of things to write about. Expect some iPhone entries soon ;).
&lt;/p&gt;</content>
		<author>
			<name>fiam</name>
			<uri>http://fi.am/tag/cocoa//</uri>
		</author>
		<source>
			<title type="html">Latest entries tagged with cocoa</title>
			<link rel="self" href="http://fi.am/feeds/tag/cocoa/" />
			<id>http://fi.am/feeds/tag/cocoa/</id>
			<updated>2008-10-08T10:19:27+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">TouchMap Teaser</title>
		<link href="http://feeds.feedburner.com/~r/toxicsoftwarecom/~3/408596424/" />
		<id>http://toxicsoftware.com/?p=374</id>
		<updated>2008-10-01T20:58:20+00:00</updated>
		<content type="html">&lt;p&gt;A quick teaser for TouchMap. I&amp;#8217;m hoping to release this on &lt;a href="http://code.google.com/p/touchcode/"&gt;TouchCode&lt;/a&gt; later today.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://toxicsoftware.com/uploads/TouchMap/TouchMap.mov"&gt;TouchMap.mov&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/toxicsoftwarecom/~4/408596424" height="1" width="1" /&gt;</content>
		<author>
			<name>schwa</name>
			<uri>http://toxicsoftware.com</uri>
		</author>
		<source>
			<title type="html">toxicsoftware.com</title>
			<subtitle type="html">RANDOMIZE USR 0</subtitle>
			<link rel="self" href="http://toxicsoftware.com/atom.xml" />
			<id>http://toxicsoftware.com/feed/atom/</id>
			<updated>2008-10-07T12:49:02+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Apple Lifts iPhone Developer NDA</title>
		<link href="http://www.red-sweater.com/blog/614/apple-lifts-iphone-developer-nda" />
		<id>http://www.red-sweater.com/blog/?p=614</id>
		<updated>2008-10-01T16:50:16+00:00</updated>
		<content type="html">&lt;p&gt;Apple made the right choice today, in choosing to publicly lift the non-disclosure agreement which has, for the past several months, prevented iPhone developers from discussing specifics of the platform and development process.&lt;/p&gt;
&lt;p&gt;
I&amp;#8217;m sure most of you have already heard the news, it&amp;#8217;s being shouted from the rooftops on venues such as Twitter, but I wanted to make my own announcement, as I think many developers should do.
&lt;/p&gt;
&lt;p&gt;
Why? Because as much as we cry and whine in the face of Apple&amp;#8217;s misguided actions and policies, we should be prepared to turn around and laud them when they do the right thing. Today, Apple deserves to be &lt;em&gt;lavished&lt;/em&gt; with praise from all corners of the iPhone developer world.
&lt;/p&gt;
&lt;p&gt;
You go, Apple.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://developer.apple.com/iphone/program/"&gt;Apple&amp;#8217;s statement&lt;/a&gt;, reproduced here in entirety because the page has a temporary look to it:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;h3&gt;To Our Developers&lt;/h3&gt;
&lt;p&gt;
We have decided to drop the non-disclosure agreement (NDA) for released iPhone software.
&lt;/p&gt;
&lt;p&gt;
We put the NDA in place because the iPhone OS includes many Apple inventions and innovations that we would like to protect, so that others don’t steal our work. It has happened before. While we have filed for hundreds of patents on iPhone technology, the NDA added yet another level of protection. We put it in place as one more way to help protect the iPhone from being ripped off by others.
&lt;/p&gt;
&lt;p&gt;
However, the NDA has created too much of a burden on developers, authors and others interested in helping further the iPhone’s success, so we are dropping it for released software. Developers will receive a new agreement without an NDA covering released software within a week or so. Please note that unreleased software and features will remain under NDA until they are released.
&lt;/p&gt;
&lt;p&gt;
Thanks to everyone who provided us constructive feedback on this matter.
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
No longer any need to &lt;a href="http://www.red-sweater.com/blog/581/better-to-ask-forgiveness"&gt;ask forgiveness&lt;/a&gt;, now that we&amp;#8217;ve got permission to productively discuss the development process. Thanks again, Apple!&lt;/p&gt;</content>
		<author>
			<name>Red Sweater Blog</name>
			<uri>http://www.red-sweater.com/blog</uri>
		</author>
		<source>
			<title type="html">Red Sweater Blog</title>
			<subtitle type="html">Mac &amp;amp; Technology Writings by Daniel Jalkut</subtitle>
			<link rel="self" href="http://www.red-sweater.com/blog/feed" />
			<id>http://www.red-sweater.com/blog/feed</id>
			<updated>2008-10-08T08:49:28+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">The NDA is dead! long live the ... err...</title>
		<link href="http://www.zathras.de/angelweb/blog-the-nda-is-dead-long-live-err.htm" />
		<id>http://www.zathras.de/angelweb/blog-the-nda-is-dead-long-live-err.htm</id>
		<updated>2008-10-01T16:32:13+00:00</updated>
		<content type="html">The iPhone NDA has been taken down . Or rather, will be in a bit. At least for released stuff, which approaches normalcy.
Thanks, Apple! We love you again.
Well, except for that review process, but this is better than nothing.</content>
		<author>
			<name>M. Uli Kusterer</name>
			<email>witness.of.teachtext@gmx.net</email>
			<uri>http://www.zathras.de/angelweb/</uri>
		</author>
		<source>
			<title type="html">Zathras.de - Uli's most useless blog in the World</title>
			<subtitle type="html">Uli Kusterer's Blog.</subtitle>
			<link rel="self" href="http://www.zathras.de/angelweb/BlogRSSFeed.rss" />
			<id>http://www.zathras.de/angelweb/BlogRSSFeed.rss</id>
			<updated>2008-10-08T10:19:15+00:00</updated>
			<rights type="html">Copyright 2004 by M. Uli Kusterer</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">iPhone NDA to be lifted</title>
		<link href="http://mattgemmell.com/2008/10/01/iphone-nda-to-be-lifted" />
		<id>http://mattgemmell.com/?p=936</id>
		<updated>2008-10-01T15:44:40+00:00</updated>
		<content type="html">&lt;p&gt;Apple has today updated its &lt;a href="http://developer.apple.com/iphone/program/"&gt;iPhone Developer Program portal&lt;/a&gt; with a message indicating that the NDA (non-disclosure agreement) for the iPhone SDK is to be &amp;#8220;dropped for released iPhone software&amp;#8221; (which presumably means versions of the iPhone SDK which correspond to publicly released versions of the iPhone firmware - at time of writing, this would be the iPhone SDK for firmwares 2.0 and 2.1). I&amp;#8217;ve archived the &lt;a href="http://mattgemmell.com/files/apple_nda_message.txt"&gt;text of the message here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This change is to take place within a week or so of the date of this post (Wednesday 1st October 2008), when developers will receive an updated agreement with the new terms. This new state of affairs should allow public discussion of iPhone SDK APIs, the publication of books on iPhone development, iPhone SDK development training courses, open source code releases, and more. Unreleased (beta) versions of future iPhone firmwares will remain under NDA until they are released, as is the case with beta version of Mac OS X.&lt;/p&gt;
&lt;p&gt;Surely another strong indication that, as I previously asserted, &lt;a href="http://mattgemmell.com/2008/09/27/apple-is-listening"&gt;Apple is listening&lt;/a&gt; to our concerns.&lt;/p&gt;</content>
		<author>
			<name>Matt Legend Gemmell</name>
			<uri>http://mattgemmell.com</uri>
		</author>
		<source>
			<title type="html">Matt Legend Gemmell » Development</title>
			<subtitle type="html">Modesty is Lying</subtitle>
			<link rel="self" href="http://mattgemmell.com/category/development/feed/" />
			<id>http://mattgemmell.com/category/development/feed/</id>
			<updated>2008-10-07T11:49:39+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">NDA Day</title>
		<link href="http://feeds.feedburner.com/~r/toxicsoftwarecom/~3/408344984/" />
		<id>http://toxicsoftware.com/?p=369</id>
		<updated>2008-10-01T15:35:56+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href="http://developer.apple.com/iphone/program/"&gt;http://developer.apple.com/iphone/program/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you Apple.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/toxicsoftwarecom/~4/408344984" height="1" width="1" /&gt;</content>
		<author>
			<name>schwa</name>
			<uri>http://toxicsoftware.com</uri>
		</author>
		<source>
			<title type="html">toxicsoftware.com</title>
			<subtitle type="html">RANDOMIZE USR 0</subtitle>
			<link rel="self" href="http://toxicsoftware.com/atom.xml" />
			<id>http://toxicsoftware.com/feed/atom/</id>
			<updated>2008-10-07T12:49:02+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Cocoa Touch Tutorial: iPhone Application Example</title>
		<link href="http://www.cimgf.com/2008/10/01/cocoa-touch-tutorial-iphone-application-example/" />
		<id>http://www.cimgf.com/?p=131</id>
		<updated>2008-10-01T15:34:34+00:00</updated>
		<content type="html">&lt;p&gt;Similar to one of my first blog posts on building a basic application for Mac OS X using xcode 3.0, I am going to explain for beginning iPhone/iPod Touch developers how to build the most basic Cocoa Touch application using Interface Builder and an application delegate in xcode 3.1. This tutorial post is really to provide a quick how-to. I won&amp;#8217;t go into any depth explaining why things are done the way they are done, but this should help you get up and running with your first application pretty quickly so that you too can clog the App Store with useless superfluous apps (kidding&amp;#8230; just kidding).&lt;/p&gt;
&lt;p&gt;If you are a visual learner, it may be helpful to you to instead watch a video presentation of this tutorial. I&amp;#8217;ve posted it on the site, but you&amp;#8217;ll have to click the link to see my &lt;a href="http://www.cimgf.com/videos/iphonetutorial/"&gt;Cocoa Touch Video Tutorial&lt;/a&gt;.&lt;br /&gt;
&lt;span id="more-131"&gt;&lt;/span&gt;&lt;br /&gt;
Understanding Cocoa programming is much simpler if you learn MVC, &lt;strong&gt;Model, View, Controller&lt;/strong&gt;. You can probably step through code examples and figure some things out without learning MVC, but I wouldn&amp;#8217;t recommend it. Go Google it and read up on it.&lt;/p&gt;
&lt;p&gt;I will say as an introduction to MVC for those who are not familiar that it should probably be called &lt;strong&gt;(Model --&gt; Controller --&gt; View)&lt;/strong&gt; or &lt;strong&gt;(View --&gt; Controller --&gt; Model)&lt;/strong&gt; as the controller always sits between the other two. Your controller is either telling your model to update its data or it is telling the view to update its display. That&amp;#8217;s the crux of the whole paradigm. The details run much deeper, but that&amp;#8217;s how I will nutshell it for you.&lt;/p&gt;

&lt;h1&gt;Create Your Application&lt;/h1&gt;
&lt;p&gt;Let&amp;#8217;s get started. Create a Cocoa Application using the following steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Select &lt;strong&gt;File &gt; New Project&amp;#8230;&lt;/strong&gt;, under the &lt;em&gt;iPhone OS&lt;/em&gt; templates choose &lt;em&gt;Window-Based Application&lt;/em&gt; in the ensuing dialog. Click &lt;strong&gt;Choose&amp;#8230;&lt;/strong&gt;&lt;/li&gt;
&lt;p&gt;
&lt;a href="http://www.cimgf.com/wp-content/uploads/2008/07/new-project.png" rel="lightbox"&gt;&lt;img src="http://www.cimgf.com/wp-content/uploads/2008/07/new-project-276x300.png" alt="iPhone Project Templates" title="iPhone Project Templates" width="276" height="300" class="alignleft size-medium wp-image-146" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;li&gt;Enter &amp;#8216;Basic iPhone App&amp;#8217; as the project name. Click &lt;strong&gt;Save&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You should see a project workspace like the following:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cimgf.com/wp-content/uploads/2008/07/basic-iphone-app.png" rel="lightbox"&gt;&lt;img src="http://www.cimgf.com/wp-content/uploads/2008/07/basic-iphone-app-300x212.png" alt="Basic iPhone Application" title="Basic iPhone Application" width="300" height="212" class="alignleft size-medium wp-image-141" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The next thing you should do is create a class to act as your controller or delegate.&lt;/p&gt;
&lt;h1&gt;Delegate == Controller&lt;/h1&gt;
&lt;p&gt;The words delegate and controller can be used synonymously. You&amp;#8217;ll see later that we delegate the work of the different controls we create in Interface Builder to a delegate or controller class. In the iPhone template projects, this application delegate is created for you. Our app delegate has been named &lt;em&gt;Basic_iPhone_AppAppDelegate&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;In our app delegate class we need to add what Cocoa developers refer to as &lt;em&gt;outlets&lt;/em&gt; and &lt;em&gt;actions&lt;/em&gt;. I could spend an entire post explaining these two things in depth, but for the sake of brevity and walking you through the steps to build your first application, the definition will have to suffice.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
Outlets represent controls in your user interface that can have some action performed upon them. Action are functions in your code that are connected to controls in your user interface such as a button or a drop down list. When connected to a button for instance, the action code will be run when the user clicks the button.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;In xcode, open your app delegate header file &lt;em&gt;Basic_iPhone_AppAppDelegate.h&lt;/em&gt;. Add an outlet for the text field and the label below the window outlet as in the following snippet:&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="line_numbers"&gt;&lt;pre&gt;1
2
3
4
5
&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre class="objc objc"&gt;&lt;span&gt;@interface&lt;/span&gt; Basic_iPhone_AppAppDelegate &lt;span&gt;:&lt;/span&gt; &lt;span&gt;NSObject&lt;/span&gt; &amp;lt;UIApplicationDelegate&amp;gt; &lt;span&gt;&amp;#123;&lt;/span&gt;
    IBOutlet UIWindow &lt;span&gt;*&lt;/span&gt;window;
    IBOutlet UITextField &lt;span&gt;*&lt;/span&gt;textField;
    IBOutlet UILabel &lt;span&gt;*&lt;/span&gt;label;
&lt;span&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;You will also want to add an action that will be performed when our button is clicked. Add that below the property for our window:&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="line_numbers"&gt;&lt;pre&gt;1
2
3
4
5
6
7
8
9
&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre class="objc objc"&gt;&lt;span&gt;@interface&lt;/span&gt; Basic_iPhone_AppAppDelegate &lt;span&gt;:&lt;/span&gt; &lt;span&gt;NSObject&lt;/span&gt; &amp;lt;UIApplicationDelegate&amp;gt; &lt;span&gt;&amp;#123;&lt;/span&gt;
    IBOutlet UIWindow &lt;span&gt;*&lt;/span&gt;window;
    IBOutlet UITextField &lt;span&gt;*&lt;/span&gt;textField;
    IBOutlet UILabel &lt;span&gt;*&lt;/span&gt;label;
&lt;span&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span&gt;@property&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;nonatomic, retain&lt;span&gt;&amp;#41;&lt;/span&gt; UIWindow &lt;span&gt;*&lt;/span&gt;window;
&amp;nbsp;
&lt;span&gt;-&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;IBAction&lt;span&gt;&amp;#41;&lt;/span&gt;click&lt;span&gt;:&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;sender;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;li&gt;Now switch over to the implementation file, &lt;em&gt;Basic_iPhone_AppAppDelegate.m&lt;/em&gt;. Add the &lt;em&gt;click:&lt;/em&gt; action below our &lt;em&gt;applicationDidFinishLaunching:&lt;/em&gt; function:

&lt;div class="wp_syntax"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="line_numbers"&gt;&lt;pre&gt;1
2
3
4
5
6
7
8
9
10
&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre class="objc objc"&gt;&lt;span&gt;-&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;applicationDidFinishLaunching&lt;span&gt;:&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;UIApplication &lt;span&gt;*&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;application &lt;span&gt;&amp;#123;&lt;/span&gt;	
&amp;nbsp;
    &lt;span&gt;// Override point for customization after app launch	&lt;/span&gt;
    &lt;span&gt;&amp;#91;&lt;/span&gt;window makeKeyAndVisible&lt;span&gt;&amp;#93;&lt;/span&gt;;
&lt;span&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span&gt;-&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;IBAction&lt;span&gt;&amp;#41;&lt;/span&gt;click&lt;span&gt;:&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;sender;
&lt;span&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
&lt;span&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;
We will actually add some code to do something in the &lt;em&gt;click:&lt;/em&gt; action handler, but first we need to hook it up to the user interface in Interface Builder.
&lt;/p&gt;&lt;/li&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h1&gt;Interface Builder And Controller/Delegate Implementation&lt;/h1&gt;
&lt;p&gt;Now that you&amp;#8217;ve specified the outlets&amp;#8211;a &lt;em&gt;UITextField&lt;/em&gt; and a &lt;em&gt;UILabel&lt;/em&gt; and an action called &lt;em&gt;click:&lt;/em&gt;, you will see these items available for connecting to the UI in Interface builder. Let&amp;#8217;s open Interface Builder and make the connections we need using the following steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In your xcode workspace, expand the folder in the tree view called &lt;strong&gt;Resources&lt;/strong&gt; and double click the file called &amp;#8216;MainMenu.xib&amp;#8217;.&lt;br /&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;: A &lt;em&gt;.xib&lt;/em&gt; is a &lt;em&gt;.nib&lt;/em&gt; that uses XML for the internal data structure.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;
This will open the &lt;em&gt;xib&lt;/em&gt; file in Interface Builder&lt;/p&gt;
&lt;li&gt;Once Interface Builder loads, you will notice that there is an object representation of our app delegate in the &lt;em&gt;MainWindow.xib&lt;/em&gt; window. This is the object you will use to create connections for your actions and outlets.
&lt;p&gt;&lt;a href="http://www.cimgf.com/wp-content/uploads/2008/07/mainwindowxib.png" rel="lightbox"&gt;&lt;img src="http://www.cimgf.com/wp-content/uploads/2008/07/mainwindowxib-300x190.png" alt="MainWindow.xib" title="MainWindow.xib" width="300" height="190" class="alignnone size-medium wp-image-145" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/li&gt;&lt;/ol&gt;
&lt;h1&gt;Design The User Interface&lt;/h1&gt;
&lt;p&gt;Now you simply need to add the controls to the main window in Interface Builder and then we can connect the &lt;em&gt;action&lt;/em&gt; and &lt;em&gt;outlet&lt;/em&gt; accordingly. To finish the interface, complete the following steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Drag a &lt;em&gt;TextField&lt;/em&gt;, a &lt;em&gt;Label&lt;/em&gt;, and a &lt;em&gt;Button&lt;/em&gt; to the main window so that the user interface looks like the screenshot below:
&lt;p&gt;&lt;a href="http://www.cimgf.com/wp-content/uploads/2008/07/ibwindow.png" rel="lightbox"&gt;&lt;img src="http://www.cimgf.com/wp-content/uploads/2008/07/ibwindow-191x300.png" alt="iPhone Application UI" title="iPhone Application UI" width="191" height="300" class="alignleft size-medium wp-image-143" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;li&gt;&lt;strong&gt;Control-Click&lt;/strong&gt; and drag from the &lt;em&gt;Button&lt;/em&gt; to your app delegate object in the &amp;#8216;MainWindow.xib&amp;#8217; window.
&lt;p&gt;&lt;a href="http://www.cimgf.com/wp-content/uploads/2008/07/buttonconnect.png" rel="lightbox"&gt;&lt;img src="http://www.cimgf.com/wp-content/uploads/2008/07/buttonconnect-300x247.png" alt="Button Connection" title="Button Connection" width="300" height="247" class="alignleft size-medium wp-image-142" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
A pop-up will display. Select &lt;em&gt;click:&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Control-Click&lt;/strong&gt; the app delegate object and drag it to the text field in the main window.
&lt;p&gt;&lt;a href="http://www.cimgf.com/wp-content/uploads/2008/07/textfieldconnect.png" rel="lightbox"&gt;&lt;img src="http://www.cimgf.com/wp-content/uploads/2008/07/textfieldconnect-300x248.png" alt="Textfield Connection" title="Textfield Connection" width="300" height="248" class="alignleft size-medium wp-image-147" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
A pop-up will display. Select &lt;em&gt;textField&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Control-Click&lt;/strong&gt; the app delegate object and drag it to the label in the main window.
&lt;p&gt;&lt;a href="http://www.cimgf.com/wp-content/uploads/2008/07/labelconnect.png" rel="lightbox"&gt;&lt;img src="http://www.cimgf.com/wp-content/uploads/2008/07/labelconnect-300x244.png" alt="Label Connection" title="Label Connection" width="300" height="244" class="alignleft size-medium wp-image-144" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A pop-up will display. Select &lt;em&gt;label&lt;/em&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;That&amp;#8217;s it for Interface Builder. You can quit interface builder and return to xcode. We have one more piece of code to add and then our application will be finished.&lt;/p&gt;
&lt;h1&gt;Finishing Up&lt;/h1&gt;
&lt;p&gt;When the button is clicked, it will simply grab the text from the text field and place it into the label. That&amp;#8217;s all the application does. Here&amp;#8217;s the code you need. Just make your implementation of the &lt;em&gt;click:&lt;/em&gt; action in the &lt;em&gt;Basic_iPhone_AppAppDelegate.m&lt;/em&gt; file look like this:&lt;br /&gt;
&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="line_numbers"&gt;&lt;pre&gt;1
2
3
4
&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre class="objc objc"&gt;&lt;span&gt;-&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;IBAction&lt;span&gt;&amp;#41;&lt;/span&gt;click&lt;span&gt;:&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;sender;
&lt;span&gt;&amp;#123;&lt;/span&gt;
    &lt;span&gt;&amp;#91;&lt;/span&gt;label setText&lt;span&gt;:&lt;/span&gt;&lt;span&gt;&amp;#91;&lt;/span&gt;textField text&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;;
&lt;span&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Notice we are grabbing the text from the text field, and setting the text in our label with it. Now all you need to do is click &amp;#8220;Build and Go&amp;#8221;. When the application runs the &lt;em&gt;iPhone Simulator&lt;/em&gt; will be started. You will see the application load. Type some text into the text field and click the &lt;strong&gt;Change&lt;/strong&gt; button. You will see the label update with the text from the text field.&lt;/p&gt;
&lt;h1&gt;Conclusion&lt;/h1&gt;
&lt;p&gt;The limit with iPhone development is really just your imagination. It is an extremely fun platform to develop on and the resulting applications are very rewarding. Have fun with it and learn as much as you can. Just do me a favor and don&amp;#8217;t clog the App Store with any more flashlight apps or tip calculators&amp;#8230; Seriously ;-) . Until next time.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cimgf.com/wp-content/uploads/2008/10/basiciphoneapp.zip"&gt;&lt;img src="http://www.cimgf.com/wp-content/uploads/2008/03/xcode.png" alt="xcode.png" border="0" width="64" /&gt;&lt;br /&gt;Basic iPhone Application Demo Project&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>Cocoa Is My Girlfriend</name>
			<uri>http://www.cimgf.com</uri>
		</author>
		<source>
			<title type="html">Cocoa Is My Girlfriend</title>
			<subtitle type="html">Taglines are for Windows programmers</subtitle>
			<link rel="self" href="http://www.cimgf.com/feed/" />
			<id>http://www.cimgf.com/feed/</id>
			<updated>2008-10-04T16:49:46+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Thank Goodness the F'ing iPhone NDA is being lifted</title>
		<link href="http://cocoasamurai.blogspot.com/2008/10/thank-goodness-f-iphone-nda-is-being.html" />
		<id>tag:blogger.com,1999:blog-34442452.post-2457757437810064924</id>
		<updated>2008-10-01T13:10:30+00:00</updated>
		<content type="html">Apple FINALLY did the right thing today and publicly recognized what pretty much all iPhone developers and the  public that have been paying attention to the news have known for a long time now, that the iPhone NDA was doing much more harm than good. From their page ( http://developer.apple.com/iphone/program/ ) 

"To Our Developers

We have decided to drop the non-disclosure agreement (NDA) for</content>
		<author>
			<name>Colin Wheeler</name>
			<email>noreply@blogger.com</email>
			<uri>http://cocoasamurai.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Cocoa Samurai</title>
			<link rel="self" href="http://cocoasamurai.blogspot.com/feeds/posts/default" />
			<id>tag:blogger.com,1999:blog-34442452</id>
			<updated>2008-10-08T03:49:13+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Web Inspector Redesign</title>
		<link href="http://webkit.org/blog/197/web-inspector-redesign/" />
		<id>http://webkit.org/blog/?p=197</id>
		<updated>2008-10-01T00:06:36+00:00</updated>
		<content type="html">&lt;p&gt;It has been nine months since our &lt;a href="http://webkit.org/blog/148/web-inspector-update"&gt;last Web Inspector update&lt;/a&gt; and we have a lot of cool things to talk about. If you diligently use the Web Inspector in nightly builds, you might have seen some of these improvements, while other subtle changes might have gone unnoticed.&lt;/p&gt;
&lt;p&gt;Some of the Web Inspector improvements were contributed by members of the WebKit community. We really want to get the whole community involved with making this the best web development tool available. Remember, most of the Web Inspector is written in &lt;a href="http://trac.webkit.org/browser/trunk/WebCore/inspector/front-end/"&gt;HTML, JavaScript, and CSS&lt;/a&gt;, so it’s easy to get started making changes and improvements.&lt;/p&gt;
&lt;h3&gt;Redesigned Interface&lt;/h3&gt;
&lt;p&gt;First and foremost, the Web Inspector is now sporting a new design that organizes information into task-oriented groups — represented by icons in the toolbar. The toolbar items (Elements, Resources, Scripts, Profiles and Databases) are named after the fundamental items you will work with inside the respective panels.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://webkit.org/blog-files/inspector-toolbar.png" /&gt;&lt;/p&gt;
&lt;h3&gt;Console&lt;/h3&gt;
&lt;p&gt;The Console is now accessible from any panel. Unlike the other panels, the Console is not just used for one task — it might be used while inspecting the DOM, debugging JavaScript or analyzing HTML parse errors. The Console toggle button is found in the status bar, causing it to animate in and out from the bottom of the Web Inspector. The Console can also be toggled by the Escape key.&lt;/p&gt;
&lt;p&gt;Error and warning counts are now shown in the bottom right corner of the status bar. Clicking on these will also open the Console.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://webkit.org/blog-files/inspector-status-bar-with-errors.png" /&gt;&lt;/p&gt;
&lt;p&gt;In addition to the visual changes to the Console, we have also greatly improved usability by adding auto-completion and tab-completion. As you type expressions, property names will automatically be suggested. If there are multiple properties with the same prefix, pressing the Tab key will cycle through them. Pressing the Right arrow key will accept the current suggestion. The current suggestion will also be accepted when pressing the Tab key if there is only one matched property.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://webkit.org/blog-files/inspector-console-autocomplete.png" /&gt;&lt;/p&gt;
&lt;p&gt;Our compatibility with &lt;a href="http://getfirebug.com/commandline.html"&gt;Firebug’s command line&lt;/a&gt; and &lt;a href="http://getfirebug.com/console.html"&gt;window.console APIs&lt;/a&gt; has also been greatly improved by Keishi Hattori (服部慶士), a student at The University of Tokyo (東京大学) who tackled this area as a summer project.&lt;/p&gt;
&lt;h3&gt;Elements Panel&lt;/h3&gt;
&lt;p&gt;The Elements panel is largely the same as the previous DOM view — at least visually. Under the hood we have made number of changes and unified everything into one DOM tree.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://webkit.org/blog-files/inspector-elements-panel.png" target="_new"&gt;&lt;img src="http://webkit.org/blog-files/inspector-elements-panel.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Descend into sub-documents&lt;/strong&gt; — expanding a frame or object element will show you the DOM tree for the document inside that element.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automatic updates&lt;/strong&gt; — the DOM tree will update when nodes are added to or removed from the inspected page.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inspect clicked elements&lt;/strong&gt; — enabling the new inspect mode lets you hover around the page to find a node to inspect. Clicking on a node in the page will focus it in the Elements panel and turn off the inspect mode. This was contributed by Matt Lilek.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Temporarily disable style properties&lt;/strong&gt; — hovering over an editable style rule will show checkboxes that let you disable individual properties.
&lt;p&gt;&lt;img src="http://webkit.org/blog-files/inspector-disabling-properties.png" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Style property editing&lt;/strong&gt; — double click to edit a style property. Deleting all the text will delete the property. Typing or pasting in multiple properties will add the new properties.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stepping for numeric style values&lt;/strong&gt; — while editing a style property value with a number, you can use the Up or Down keys to increment or decrement the number. Holding the Alt/Option key will step by 0.1, while holding the Shift key will step by 10.
&lt;p&gt;&lt;img src="http://webkit.org/blog-files/inspector-numeric-style-stepping.gif" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DOM attribute editing&lt;/strong&gt; — double click to edit a DOM element attribute. Typing or pasting in multiple attributes will add the new attributes. Deleting all the text will delete the attribute.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DOM property editing&lt;/strong&gt; — double click to edit a DOM property  in the Properties pane. Deleting all the text will delete the property, if allowed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metrics editing&lt;/strong&gt; — double click to edit a any of the CSS box model metrics.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Position metrics&lt;/strong&gt; — the Metrics pane now includes position info for absolute, relative and fixed positioned elements.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Resources Panel&lt;/h3&gt;
&lt;p&gt;The Resources panel is a supercharged version of the previous Network panel. It has a similar looking timeline waterfall, but a lot has been done to make it even more useful.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://webkit.org/blog-files/inspector-resources-panel.png" target="_new"&gt;&lt;img src="http://webkit.org/blog-files/inspector-resources-panel.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Graph by size&lt;/strong&gt; — click Size in the sidebar to quickly see the largest resources downloaded.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multiple sorting options&lt;/strong&gt; — there are many sorting methods available for the Time graph, including latency and duration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Latency bars&lt;/strong&gt; — the Time graph now shows latency in the bar with a lighter shade. This is the time between making the request and the server’s first response.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unified resource views&lt;/strong&gt; — clicking a resource in the sidebar will show you the data pulled from the network (not downloaded again), including the request and response headers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;View XHRs&lt;/strong&gt; — the time and size graphs also show XMLHttpRequests. Selecting an XHR resource in the sidebar will show the XHR data and headers.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Scripts Panel&lt;/h3&gt;
&lt;p&gt;The previous standalone &lt;a href="http://webkit.org/blog/61/introducing-drosera"&gt;Drosera JavaScript debugger&lt;/a&gt; has been replaced with a new JavaScript debugger integrated into the Web Inspector. The new integrated JavaScript debugger is much faster than Drosera, and should be much more convenient.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://webkit.org/blog-files/inspector-scripts-panel.png" target="_new"&gt;&lt;img src="http://webkit.org/blog-files/inspector-scripts-panel.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;From the Scripts panel you can see all the script resources that are part of the inspected page. Clicking in the line gutter of the script will set a breakpoint for that line of code. There are the standard controls to pause, resume and step through the code. While paused you will see the current call stack and in-scope variables in the right-hand sidebar.&lt;/p&gt;
&lt;p&gt;The Web inspector has a unique feature regarding in-scope variables: it shows closures, “with” statements, and event-related scope objects separately. This gives you a clearer picture of where your variables are coming from and why things might be breaking (or even working correctly by accident).&lt;/p&gt;
&lt;p&gt;&lt;img src="http://webkit.org/blog-files/inspector-closure-scope.png" /&gt; &lt;img src="http://webkit.org/blog-files/inspector-with-scope.png" /&gt;&lt;/p&gt;
&lt;h3&gt;Profiles Panel&lt;/h3&gt;
&lt;p&gt;The brand new JavaScript Profiler in the Profiles panel helps you identify where execution time is spent in your page’s JavaScript functions. The sidebar on the left lists all the recorded profiles and a tree view on the right shows the information gathered for the selected profile. Profiles that have the same name are grouped as sequential runs under a collapsible item in the sidebar.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://webkit.org/blog-files/inspector-profiles-panel.png" target="_new"&gt;&lt;img src="http://webkit.org/blog-files/inspector-profiles-panel.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There are two ways to view a profile: bottom up (heavy) or top down (tree). Each view has its own advantages. The heavy view allows you to understand which functions have the most performance impact and the calling paths to those functions. The tree view gives you an overall picture of the script’s calling structure, starting at the top of the call-stack.&lt;/p&gt;
&lt;p&gt;Below the profile are a couple of data mining controls to facilitate the dissection of profile information. The focus button (Eye symbol) will filter the profile to only show the selected function and its callers. The exclude button (X symbol) will remove the selected function from the entire profile and charge its callers with the excluded function’s total time. While any of these data mining features are active, a reload button is available that will restore the profile to its original state.&lt;/p&gt;
&lt;p&gt;WebKit’s JavaScript profiler is fully compatible with &lt;a href="http://getfirebug.com/console.html"&gt;Firebug’s console.profile() and console.profileEnd() APIs&lt;/a&gt;, but you can also specify a title in &lt;code&gt;console.profileEnd()&lt;/code&gt; to stop a specific profile if multiple profiles are being recorded. You can also record a profile using the Start/Stop Profiling button in the Profiles panel.&lt;/p&gt;
&lt;h3&gt;Databases Panel&lt;/h3&gt;
&lt;p&gt;The Databases panel lets you interact with &lt;a href="http://www.w3.org/html/wg/html5/#sql"&gt;HTML 5 Database storage&lt;/a&gt;. You can examine the contents of all of the page’s open databases and execute SQL queries against them. Each database is shown in the sidebar. Expanding a database’s disclosure triangle will show the database’s tables. Selecting a database table will show you a data grid containing all the columns and rows for that table.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://webkit.org/blog-files/inspector-databases-panel.png" target="_new"&gt;&lt;img src="http://webkit.org/blog-files/inspector-databases-panel.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Selecting a database in the sidebar will show an interactive console for evaluating SQL queries. The input in this console has auto-completion and tab-completion for common SQL words and phrases along with table names for the database.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://webkit.org/blog-files/inspector-databases-panel-query-view.png" target="_new"&gt;&lt;img src="http://webkit.org/blog-files/inspector-databases-panel-query-view.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Search&lt;/h3&gt;
&lt;p&gt;Accompanying the task-oriented reorganization, the search field in the toolbar now searches the current panel with results being highlighted in the context of the panel. Targeting the search to the current panel allows each panel to support specialized queries that are suited for the type of information being shown. The panels that support specialized queries are Elements and Profiles.&lt;/p&gt;
&lt;p&gt;The Elements panel supports XPath and CSS selectors as queries in addition to plain text. Any search you perform will be attempted as a plain text search, a XPath query using &lt;code&gt;document.evaluate()&lt;/code&gt; and a CSS selector using &lt;code&gt;document.querySelectorAll()&lt;/code&gt;. All the search results will be highlighted in the DOM tree, with the first match being revealed and selected.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://webkit.org/blog-files/inspector-searching-elements.png" target="_new"&gt;&lt;img src="http://webkit.org/blog-files/inspector-searching-elements.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Profiles panel supports plain text searches of the function names and resource URLs. Numeric searches are also supported that match rows in the profile’s Self, Total and Calls columns. To facilitate powerful numeric searching, there are a few operators and units that work to extend or limit your results. For example you can search for “&gt; 2.5ms” to find all the functions that took longer than 2.5 milliseconds to execute. In addition to “ms”, the other supported units are: “s” for time in seconds and “%” for percentage of time. The other supported operators are “ ”, “=”, “&gt;=” and “=”. When no units are specified the Calls column is searched.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://webkit.org/blog-files/inspector-searching-profiles.png" target="_new"&gt;&lt;img src="http://webkit.org/blog-files/inspector-searching-profiles.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In all the panels pressing Enter in the search field or ⌘G (Ctrl+G on Windows and Linux) will reveal the next result. Pressing ⇧⌘G (Ctrl+Shift+G on Windows and Linux) will reveal the previous result. In the Resources, Scripts and Profiles panels the search will be performed on the visible view first and will automatically jump to the first result only if the visible view has a match.&lt;/p&gt;
&lt;h3&gt;Availability and Contributing&lt;/h3&gt;
&lt;p&gt;All of these things are available now in the &lt;a href="http://nightly.webkit.org"&gt;Mac and Windows nightly builds&lt;/a&gt;. Give them a try today, and &lt;a href="http://bugs.webkit.decenturl.com/new-web-inspector-bug"&gt;let us know&lt;/a&gt; what you like (or don’t like).&lt;/p&gt;
&lt;p&gt;If you would like to contribute, there are some really interesting tasks in the list of &lt;a href="http://bugs.webkit.decenturl.com/web-inspector-bugs-enhancements"&gt;Web Inspector bugs and enhancements&lt;/a&gt;, and other contributors in the &lt;a href="irc://chat.freenode.net/#webkit"&gt;#webkit chat room&lt;/a&gt; are pretty much always available to provide help and advice.&lt;/p&gt;</content>
		<author>
			<name>Surfin' Safari</name>
			<uri>http://webkit.org/blog</uri>
		</author>
		<source>
			<title type="html">Surfin' Safari</title>
			<subtitle type="html">All about WebKit development</subtitle>
			<link rel="self" href="http://webkit.org/blog/feed/" />
			<id>http://webkit.org/blog/feed/atom/</id>
			<updated>2008-10-05T02:32:27+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Docudrama</title>
		<link href="http://waffle.wootest.net/2008/09/30/docudrama/" />
		<id>http://waffle.wootest.net/?p=860</id>
		<updated>2008-09-30T19:14:58+00:00</updated>
		<content type="html">&lt;p&gt;Now that we&amp;#8217;ve &lt;a href="http://waffle.wootest.net/2008/09/28/doc-brown/"&gt;established how code documentation sucks&lt;/a&gt;, let&amp;#8217;s start by deducing how code documentation could be made great.&lt;/p&gt;

&lt;p&gt;The first thing we do is we kill the idea of documenting the API inline with the code. Yes. I&amp;#8217;m serious. I know the allure of this. But I also know how it&amp;#8217;s holding back documentation.&lt;/p&gt;

&lt;p&gt;Here&amp;#8217;s what it means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You have to make your way around bigger files when editing either code or documentation. The other content is a nuisance. Yes, in competent editors you can &amp;#8220;fold&amp;#8221; those blocks; not an excuse.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plain-text formatting doesn&amp;#8217;t play well with comments, especially multiline comments, code formatting standards, and indent depths where this plays a role.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Documentation copy editing bloats the file versioning history.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It is &lt;em&gt;work&lt;/em&gt; to figure out which methods (every method has code; some have documentation) are documented. With creative header file use, this is less of a problem in some languages.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The second thing we do is we integrate code documentation into our IDE &lt;em&gt;with&lt;/em&gt; editor integration but &lt;em&gt;without&lt;/em&gt; embedding the documentation into the code. Imagine a button in the breakpoint/line number/warning gutter for creating an entry. This is a shortcut to a new documentation panel with a dedicated editor (maybe even a limited form of rich text) with capabilities to add cross references to other methods or types.&lt;/p&gt;

&lt;p&gt;From this panel, you can arrange a bunch of topics in a hierarchy, including on which page the documentation for these types go, with a sensible default of one type per page. And of course you can create conceptual material and relate back and forward between that and code elements. (This is Wiki-&lt;em&gt;like&lt;/em&gt;, but you control the hierarchal structure, you get things generated for you in a smart way  and code elements are handled in a block-wise fashion.) Everything is stored in a plain format, and can be generated into a HTML web site, zip, maybe PDF or in a form suited for the IDE&amp;#8217;s documentation browser. And of course, the documentation is (generation or not) shown in your IntelliSense or your Research Assistant or your generic contextual what-have-you as you browse code.&lt;/p&gt;

&lt;p&gt;As relieving as it was, &lt;del&gt;whining&lt;/del&gt;venting about how the code documentation generators of today, er, &lt;em&gt;yesterday&lt;/em&gt; worked is not going to solve anything. Presenting a clear idea of a more bearable way to document is much more like it; perhaps you&amp;#8217;ll now see what I&amp;#8217;m getting at.&lt;/p&gt;</content>
		<author>
			<name>Jesper</name>
			<uri>http://waffle.wootest.net</uri>
		</author>
		<source>
			<title type="html">Waffle</title>
			<link rel="self" href="http://waffle.wootest.net/atom.xml" />
			<id>http://waffle.wootest.net/feed/atom/</id>
			<updated>2008-10-07T19:32:24+00:00</updated>
			<rights type="html">Copyright 2008</rights>
		</source>
	</entry>

	<entry>
		<title type="html">Update Engine</title>
		<link href="http://feeds.feedburner.com/~r/UnixjunkieBlog/~3/406870859/update-engine.html" />
		<id>tag:blogger.com,1999:blog-10602853.post-5552566080949539325</id>
		<updated>2008-09-29T21:11:54+00:00</updated>
		<content type="html">&lt;a href="http://code.google.com/p/update-engine"&gt;&lt;img src="http://update-engine.googlecode.com/svn/site/update-engine-small.gif" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Today we announced a new open source project called &lt;a href="http://code.google.com/p/update-engine"&gt;Update Engine&lt;/a&gt;. Update Engine is a framework to help developers keep their software up-to-date. See the &lt;a href="http://googlemac.blogspot.com/2008/09/revving-software-with-update-engine.html"&gt;Google Mac blog&lt;/a&gt; post for a quick overview and a link to some demo movies explaining Update Engine [and yes, I knew I sounded like kermit when I recorded the video—I even told my wife but she didn't think so... oh well ;-)].&lt;br /&gt;&lt;br /&gt;Also, we did not build Update Engine to compete with &lt;a href="http://sparkle.andymatuschak.org/"&gt;Sparkle&lt;/a&gt;. We built Update Engine to solve different problems. If you're interested, &lt;a href="http://groups.google.com/group/update-engine/browse_thread/thread/f4f97b67c17fcce2"&gt;here's my reply&lt;/a&gt; about this in the Google Group for the project.&lt;img src="http://feeds.feedburner.com/~r/UnixjunkieBlog/~4/406870859" height="1" width="1" /&gt;</content>
		<author>
			<name>Greg</name>
			<email>noreply@blogger.com</email>
			<uri>http://unixjunkie.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Unixjunkie Blog</title>
			<subtitle type="html">Greg Miller's blog about interesting Unix and Mac stuff</subtitle>
			<link rel="self" href="http://unixjunkie.blogspot.com/feeds/posts/default" />
			<id>tag:blogger.com,1999:blog-10602853</id>
			<updated>2008-10-08T10:19:29+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Core Intuition 8: For The Good Of The Country</title>
		<link href="http://www.red-sweater.com/blog/612/podcasting-for-the-country" />
		<id>http://www.red-sweater.com/blog/?p=612</id>
		<updated>2008-09-29T19:58:35+00:00</updated>
		<content type="html">&lt;p&gt;Manton and I sat down to record &lt;a href="http://coreint.org/"&gt;another episode of Core Intuition&lt;/a&gt;, speaking as usually on a variety of topics including the &lt;a href="http://c4.rentzsch.com/"&gt;C4 conference&lt;/a&gt;, Android, and Apple&amp;#8217;s &amp;#8220;elevated user experience.&amp;#8221;&lt;/p&gt;
&lt;p&gt;
Hope you enjoy the show!&lt;/p&gt;</content>
		<author>
			<name>Red Sweater Blog</name>
			<uri>http://www.red-sweater.com/blog</uri>
		</author>
		<source>
			<title type="html">Red Sweater Blog</title>
			<subtitle type="html">Mac &amp;amp; Technology Writings by Daniel Jalkut</subtitle>
			<link rel="self" href="http://www.red-sweater.com/blog/feed" />
			<id>http://www.red-sweater.com/blog/feed</id>
			<updated>2008-10-08T08:49:28+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Ceramic Notepad</title>
		<link href="http://gusmueller.com/blog/archives/2008/09/ceramic_notepad.html" />
		<id>urn:uuid:f9771180-6eb0-4350-98bb-a2126ff85506</id>
		<updated>2008-09-29T19:22:43+00:00</updated>
		<content type="html">Yoyo Ceramics: &lt;a href="http://www.yoyoceramics.co.uk/product/PlainJotter"&gt;"Plain Jotter" ceramic notepad&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Looks neat, not sure how well it would stay clean though.  Might as well just use &lt;a href="http://flyingmeat.com/acorn/"&gt;Acorn&lt;/a&gt; anyway :)&lt;br /&gt;
&lt;br /&gt;</content>
		<author>
			<name>Gus Mueller</name>
			<uri>http://www.gusmueller.com/</uri>
		</author>
		<source>
			<title type="html">Gus's weblog, adventures in Flying Meat.</title>
			<link rel="self" href="http://gusmueller.com/blog/atom.xml" />
			<id>http://www.gusmueller.com/blog/</id>
			<updated>2008-10-03T18:32:20+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">SousChef</title>
		<link href="http://gusmueller.com/blog/archives/2008/09/souschef.html" />
		<id>urn:uuid:72f0484f-176b-4539-96ca-6e95573303cb</id>
		<updated>2008-09-29T18:47:02+00:00</updated>
		<content type="html">Congrats to Ben Lachman for releasing &lt;a href="http://www.acaciatreesoftware.com/"&gt;SousChef&lt;/a&gt;, "A digital cooking assistant".&lt;br /&gt;
&lt;br /&gt;
&lt;div class="quote"&gt;'''Most cooking software stops at letting you organize your recipes. SousChef helps you cook, start to finish. Find a recipe, cook it, modify it and share it with friends &amp;amp; family—all in one application.'''&lt;/div&gt;</content>
		<author>
			<name>Gus Mueller</name>
			<uri>http://www.gusmueller.com/</uri>
		</author>
		<source>
			<title type="html">Gus's weblog, adventures in Flying Meat.</title>
			<link rel="self" href="http://gusmueller.com/blog/atom.xml" />
			<id>http://www.gusmueller.com/blog/</id>
			<updated>2008-10-03T18:32:20+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Revving software with Update Engine</title>
		<link href="http://feeds.feedburner.com/~r/OfficialGoogleMacBlog/~3/406707895/revving-software-with-update-engine.html" />
		<id>tag:blogger.com,1999:blog-29010370.post-768103912171538137</id>
		<updated>2008-09-29T17:40:58+00:00</updated>
		<content type="html">&lt;span class="byline-author"&gt;By Greg Miller, Software Engineer, Update Engine Team&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We ship a wide variety of &lt;a id="bp_7" href="http://www.google.com/mac/" title="Mac software"&gt;Mac software&lt;/a&gt; ranging from simple Cocoa applications that anyone can use to sophisticated ones that require admin privileges. The complicated requirements of each application, combined with the need to occasionally update more than one at a time, made for a tall order. We realized that we were not the only ones facing these issues, so in true Google fashion, we set out to build a solution that we could open-source for everyone to use.&lt;br /&gt;&lt;br /&gt;So today, we're announcing &lt;a href="http://code.google.com/p/update-engine" title="Update Engine"&gt;Update Engine&lt;/a&gt;, a Mac OS X framework that can help developers keep their software up-to-date. Update Engine can update all the usual suspects, like Cocoa apps, preference panes, and screen savers. But it can also update oddballs like arbitrary files, and even things that require root—like kernel extensions. On top of that, it can update multiple products as easily as it can update one.&lt;br /&gt;&lt;br /&gt;In most cases, programmers can make use of Update Engine simply by using one of the sample command-line programs called EngineRunner. However, if you need more control over the update process, you can use the Objective-C API directly and link with the provided framework.&lt;br /&gt;&lt;br /&gt;A couple of us engineers decided to take a break from the code for a bit and try our hands at movie-making. We came up with two demos for Update Engine: The first one gives an overview of Update Engine, and the second presents an orientation of the source and shows a "Hello Engine" example. We had fun, but I think we'll keep our day jobs.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update Engine Overview&lt;/b&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.youtube.com/watch?v=9K_W5Af99PU" rel="nofollow"&gt;&lt;img src="http://update-engine.googlecode.com/svn/site/overviewPoster.png" /&gt;&lt;/a&gt; &lt;br /&gt;(&lt;a id="h3_t" href="http://www.youtube.com/watch?v=9K_W5Af99PU" title="http://www.youtube.com/watch?v=9K_W5Af99PU"&gt;http://www.youtube.com/watch?v=9K_W5Af99PU&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Hello Engine&lt;/b&gt; &lt;div&gt;&lt;br /&gt;&lt;/div&gt; &lt;div&gt;&lt;span&gt;&lt;a href="http://www.youtube.com/watch?v=x2m_poXQYMY" rel="nofollow"&gt;&lt;img src="http://update-engine.googlecode.com/svn/site/helloEnginePoster.png" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt; &lt;/div&gt;(&lt;a id="v-gi" href="http://www.youtube.com/watch?v=x2m_poXQYMY" title="http://www.youtube.com/watch?v=x2m_poXQYMY"&gt;http://www.youtube.com/watch?v=x2m_poXQYMY&lt;/a&gt;)&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OfficialGoogleMacBlog?a=DmjkL"&gt;&lt;img src="http://feeds.feedburner.com/~f/OfficialGoogleMacBlog?i=DmjkL" border="0" /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OfficialGoogleMacBlog/~4/406707895" height="1" width="1" /&gt;</content>
		<author>
			<name>Scott Knaster</name>
			<email>noreply@blogger.com</email>
			<uri>http://googlemac.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Google Mac Blog</title>
			<subtitle type="html">Macs inside Google.</subtitle>
			<link rel="self" href="http://googlemac.blogspot.com/atom.xml" />
			<id>tag:blogger.com,1999:blog-29010370</id>
			<updated>2008-10-08T00:32:47+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Introducing Top Draw</title>
		<link href="http://feeds.feedburner.com/~r/OfficialGoogleMacBlog/~3/406397687/introducing-top-draw.html" />
		<id>tag:blogger.com,1999:blog-29010370.post-272172444129672638</id>
		<updated>2008-09-29T10:30:57+00:00</updated>
		<content type="html">&lt;font class="byline-author"&gt;By Daniel Waylonis, Google Mac Team&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Top Draw is an image generation program just launched in the &lt;a href="http://code.google.com/mac/"&gt;Google Mac