<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>OmegaDelta</title>
	<atom:link href="http://omegadelta.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://omegadelta.net</link>
	<description>OmegaDelta</description>
	<lastBuildDate>Wed, 10 Mar 2010 15:39:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>iPhone dev – forcing the user language</title>
		<link>http://omegadelta.net/2010/03/11/iphone-dev-%e2%80%93-forcing-the-user-language/</link>
		<comments>http://omegadelta.net/2010/03/11/iphone-dev-%e2%80%93-forcing-the-user-language/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 15:39:41 +0000</pubDate>
		<dc:creator>Will</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[iphone dev]]></category>

		<guid isPermaLink="false">http://omegadelta.net/?p=1591</guid>
		<description><![CDATA[From my post on StackOverflow
You can force the language like so:
[[NSUserDefaults standardUserDefaults] setObject: [NSArray arrayWithObjects:@"en", nil] forKey:@"AppleLanguages"];

And undo this setting by:
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"AppleLanguages"];
Consider if you need to call [[NSUserDefaults standardUserDefaults] synchronize];
This change is persistant and only needs to be set once.
NB. you will normally have to restart the app for this to take affect.
I agree there [...]]]></description>
			<content:encoded><![CDATA[<p>From <a href="http://stackoverflow.com/questions/1245975/creating-a-localized-iphone-app-but-allowing-the-user-to-change-language-for-the/2417959#2417959">my post</a> on StackOverflow</p>
<p>You can force the language like so:</p>
<pre><code>[[NSUserDefaults standardUserDefaults] setObject: [NSArray arrayWithObjects:@"en", nil] forKey:@"AppleLanguages"];
</code></pre>
<p>And undo this setting by:</p>
<pre><code>[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"AppleLanguages"];</code></pre>
<p>Consider if you need to call <code>[[NSUserDefaults standardUserDefaults] synchronize];</code></p>
<p>This change is persistant and only needs to be set once.</p>
<p>NB. you will normally have to restart the app for this to take affect.</p>
<p>I agree there is little need to allow the user to specify a language. However the one exception is being able to override the language and set it to the developer&#8217;s native language. If the user can speak the developer&#8217;s language (e.g. English for me) then they may wish to use the App in that language, if the translations are incorrect.</p>
<p>I reference this answer: <a href="http://stackoverflow.com/questions/1669645/how-to-force-nslocalizedstring-to-use-a-specific-language/1670524#1670524">http://stackoverflow.com/questions/1669645/how-to-force-nslocalizedstring-to-use-a-specific-language/1670524#1670524</a> (the answer doesn&#8217;t actually work for me, but following the ideas in the comments did. The undo stuff I worked out.</p>
]]></content:encoded>
			<wfw:commentRss>http://omegadelta.net/2010/03/11/iphone-dev-%e2%80%93-forcing-the-user-language/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Objective-C: NSArray of weak references</title>
		<link>http://omegadelta.net/2010/03/08/objective-c-nsarray-of-weak-references/</link>
		<comments>http://omegadelta.net/2010/03/08/objective-c-nsarray-of-weak-references/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 02:04:35 +0000</pubDate>
		<dc:creator>Will</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[objective-c]]></category>

		<guid isPermaLink="false">http://omegadelta.net/?p=1587</guid>
		<description><![CDATA[Need an array of weak references?  e.g. for delegates.  Here&#8217;s some good tips.
One convenient way is to box it in a NSValue with a non-retained object.
NSValue *value = [NSValue valueWithNonretainedObjectValue:myObj];
[array addObject:value];

and when you get the object:

value = [array objectAtIndex:x];
myObj = [value nonretainedObjectValue];
]]></description>
			<content:encoded><![CDATA[<p>Need an array of weak references?  e.g. for delegates.  Here&#8217;s some <a href="http://www.omnigroup.com/mailman/archive/macosx-dev/2004-August/053984.html"><span style="color: #000000;">good tips</span></a>.</p>
<p>One convenient way is to box it in a NSValue with a non-retained object.</p>
<pre>NSValue *value = [NSValue valueWithNonretainedObjectValue:myObj];
[array addObject:value];

and when you get the object:

value = [array objectAtIndex:x];
myObj = [value nonretainedObjectValue];</pre>
]]></content:encoded>
			<wfw:commentRss>http://omegadelta.net/2010/03/08/objective-c-nsarray-of-weak-references/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple Java ReplaceAll for string literals (i.e. no regex)</title>
		<link>http://omegadelta.net/2010/03/03/simple-java-replaceall-for-string-literals-i-e-no-regex/</link>
		<comments>http://omegadelta.net/2010/03/03/simple-java-replaceall-for-string-literals-i-e-no-regex/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 09:41:43 +0000</pubDate>
		<dc:creator>Will</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://omegadelta.net/?p=1582</guid>
		<description><![CDATA[Regex is great.  Really great.  But sometimes you just don&#8217;t want it.  Java provides a Stirng.replaceAll method but it uses regex and both parameters MUST be escaped if you just want a string literal replace.
Use Pattern.quote for the first param of Stirng.replaceAll, and Matcher.quoteReplacement for the second.
Here&#8217;s an example on how to escape the regex parameters:


 String [...]]]></description>
			<content:encoded><![CDATA[<p>Regex is great.  Really great.  But sometimes you just don&#8217;t want it.  Java provides a Stirng.replaceAll method but it uses regex and both parameters MUST be escaped if you just want a string literal replace.</p>
<p>Use Pattern.quote for the first param of Stirng.replaceAll, and Matcher.quoteReplacement for the second.</p>
<p>Here&#8217;s an example on how to escape the regex parameters:</p>
<div id="_mcePaste">
<blockquote>
<div id="_mcePaste"><span style="white-space: pre;"> </span>String myString = &#8220;foo[]bar&#8221;;</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span>myString = myString.replaceAll(Pattern.quote(&#8220;foo[]&#8220;), Matcher.quoteReplacement(&#8220;bar$&#8221;));</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span>System.out.println(myString);</div>
<div><span style="white-space: pre;"> </span>// output bar$bar</div>
</blockquote>
</div>
<p>If you don&#8217;t believe me, try the above sample with</p>
<blockquote><p>myString = myString.replaceAll(&#8220;foo[]&#8220;, &#8220;bar$&#8221;);</p></blockquote>
<p>(you will get exceptions for both arguments if you try).</p>
<p>Hope that helped&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://omegadelta.net/2010/03/03/simple-java-replaceall-for-string-literals-i-e-no-regex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slide to reload</title>
		<link>http://omegadelta.net/2010/02/26/slide-to-reload/</link>
		<comments>http://omegadelta.net/2010/02/26/slide-to-reload/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 08:06:36 +0000</pubDate>
		<dc:creator>Will</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[iphone dev]]></category>

		<guid isPermaLink="false">http://omegadelta.net/?p=1577</guid>
		<description><![CDATA[I love Tweetie2&#8217;s slide to reload feature.
Maybe one day I will use a similar device, fortunately Dr. Touch has an example.
]]></description>
			<content:encoded><![CDATA[<p>I love Tweetie2&#8217;s slide to reload feature.</p>
<p>Maybe one day I will use a similar device, fortunately Dr. Touch has <a href="http://www.drobnik.com/touch/2009/12/how-to-make-a-pull-to-reload-tableview-just-like-tweetie-2/">an example</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://omegadelta.net/2010/02/26/slide-to-reload/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone Mutex/Sempahore</title>
		<link>http://omegadelta.net/2010/02/26/iphone-mutexsempahore/</link>
		<comments>http://omegadelta.net/2010/02/26/iphone-mutexsempahore/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 08:05:34 +0000</pubDate>
		<dc:creator>Will</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[iphone dev]]></category>

		<guid isPermaLink="false">http://omegadelta.net/?p=1575</guid>
		<description><![CDATA[Looking for Mutex and Semaphore in the iPhone SDK?  The classes you want are NSLock and NSConditionLock.  You can use NSConditionLock just like a semaphore.
Here&#8217;s a good NSConditionLock example
For Mutex&#8217;s, use @synchronized(self), or another NSLock object.
]]></description>
			<content:encoded><![CDATA[<p>Looking for Mutex and Semaphore in the iPhone SDK?  The classes you want are NSLock and NSConditionLock.  You can use NSConditionLock just like a semaphore.</p>
<p>Here&#8217;s a <a href="http://stackoverflow.com/questions/1230569/is-there-a-way-to-pause-an-nsthread-indefinitely-and-have-it-resumed-from-anothe/1230908#1230908">good NSConditionLock example</a></p>
<p>For Mutex&#8217;s, use @synchronized(self), or another NSLock object.</p>
]]></content:encoded>
			<wfw:commentRss>http://omegadelta.net/2010/02/26/iphone-mutexsempahore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to make pull to reload tableview like Tweetie 2</title>
		<link>http://omegadelta.net/2010/02/26/how-to-make-pull-to-reload-tableview-like-tweetie-2/</link>
		<comments>http://omegadelta.net/2010/02/26/how-to-make-pull-to-reload-tableview-like-tweetie-2/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 04:05:57 +0000</pubDate>
		<dc:creator>Will</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[iphone dev]]></category>

		<guid isPermaLink="false">http://omegadelta.net/2010/02/26/how-to-make-pull-to-reload-tableview-like-tweetie-2/</guid>
		<description><![CDATA[I really like this feature in Tweetie 2, very innovative. Well if you ever need to do something similar, you can.  Here&#8217;s how
]]></description>
			<content:encoded><![CDATA[<p>I really like this feature in Tweetie 2, very innovative. Well if you ever need to do something similar, you can.  <a href="http://www.drobnik.com/touch/2009/12/how-to-make-a-pull-to-reload-tableview-just-like-tweetie-2/">Here&#8217;s how</a></p>
]]></content:encoded>
			<wfw:commentRss>http://omegadelta.net/2010/02/26/how-to-make-pull-to-reload-tableview-like-tweetie-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GMail Labs features you should enable</title>
		<link>http://omegadelta.net/2010/02/20/gmail-labs-features-you-should-enable/</link>
		<comments>http://omegadelta.net/2010/02/20/gmail-labs-features-you-should-enable/#comments</comments>
		<pubDate>Sat, 20 Feb 2010 04:55:28 +0000</pubDate>
		<dc:creator>Will</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[internet]]></category>

		<guid isPermaLink="false">http://omegadelta.net/?p=1564</guid>
		<description><![CDATA[I highly recommend checking out the GMail labs features, Settings -&#62; Labs.  Got some useful ones in there.
Default &#8216;Reply to all&#8217; – changes default reply action to &#8216;Reply All&#8217;
Title Tweaks – re-orders the title
Inserting images – embed images into a post (useful, but a little buggy)
Forgotten Attachment Detector – reminds you to attach files
]]></description>
			<content:encoded><![CDATA[<p>I highly recommend checking out the GMail labs features, Settings -&gt; Labs.  Got some useful ones in there.</p>
<p>Default &#8216;Reply to all&#8217; – changes default reply action to &#8216;Reply All&#8217;</p>
<p>Title Tweaks – re-orders the title</p>
<p>Inserting images – embed images into a post (useful, but a little buggy)</p>
<p>Forgotten Attachment Detector – reminds you to attach files</p>
]]></content:encoded>
			<wfw:commentRss>http://omegadelta.net/2010/02/20/gmail-labs-features-you-should-enable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SVN – partial checkouts</title>
		<link>http://omegadelta.net/2010/02/20/svn-%e2%80%93%c2%a0partial-checkouts/</link>
		<comments>http://omegadelta.net/2010/02/20/svn-%e2%80%93%c2%a0partial-checkouts/#comments</comments>
		<pubDate>Sat, 20 Feb 2010 04:51:02 +0000</pubDate>
		<dc:creator>Will</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://omegadelta.net/?p=1562</guid>
		<description><![CDATA[I have a project setup like this:
trunk/Project1
trunk/Project2
I wanted to add a common library to both projects.  Turns out there is a really nice way of doing this.
Add the library to trunk/Library
Then do a selective checkout.  Simply check out the trunk using &#8211;depth=empty (docs).  Then in this directory (which is a working copy with a .svn), [...]]]></description>
			<content:encoded><![CDATA[<p>I have a project setup like this:</p>
<p>trunk/Project1<br />
trunk/Project2</p>
<p>I wanted to add a common library to both projects.  Turns out there is a really nice way of doing this.</p>
<p>Add the library to trunk/Library</p>
<p>Then do a selective checkout.  Simply check out the trunk using &#8211;depth=empty (<a href="http://svnbook.red-bean.com/en/1.0/re04.html">docs</a>).  Then in this directory (which is a working copy with a .svn), you &#8220;svn update&#8221; the various directories you <em>do</em> want.  In this case, &#8217;svn update Library&#8217; and &#8217;svn update Project1&#8242;.  You now have a perfectly valid, single working copy with just the libraries you need.</p>
<p>SVN also now has <a href="http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-externals.html">relative externs</a> (since 1.5) so you could extern to ../Library which then still plays nice when you branch the trunk.  Only catch – it&#8217;s still an extern which requires separate committing and merging.  Less than ideal.  Still is it a hell of a lot better than absolute externs which require updating every time you branch as well.  I went with the partial checkout solution above, I think it&#8217;s neater, but it is nice to have the choice now.</p>
]]></content:encoded>
			<wfw:commentRss>http://omegadelta.net/2010/02/20/svn-%e2%80%93%c2%a0partial-checkouts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Like This App?  Rate it&#8230;</title>
		<link>http://omegadelta.net/2010/02/14/like-this-app-rate-it/</link>
		<comments>http://omegadelta.net/2010/02/14/like-this-app-rate-it/#comments</comments>
		<pubDate>Sun, 14 Feb 2010 10:52:53 +0000</pubDate>
		<dc:creator>Will</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[iphone dev]]></category>

		<guid isPermaLink="false">http://omegadelta.net/?p=1553</guid>
		<description><![CDATA[MobileOrchard has some great ideas regarding fighting the negative App-Store bias (caused by the &#8216;rate on delete&#8217; feature).
I tweaked their code a little, localising it, and making it ask a second time if the user clicks &#8216;No Thanks&#8217; the first time (in case they were simply busy).
My advice would be to make sure you put [...]]]></description>
			<content:encoded><![CDATA[<p>MobileOrchard has <a href="http://www.mobileorchard.com/fighting-back-against-the-app-stores-negative-rating-bias/  ">some great ideas</a> regarding fighting the negative App-Store bias (caused by the &#8216;rate on delete&#8217; feature).</p>
<p>I tweaked their code a little, localising it, and making it ask a second time if the user clicks &#8216;No Thanks&#8217; the first time (in case they were simply busy).</p>
<p>My advice would be to make sure you put the dialog in a place where the user isn&#8217;t busy doing this.  For GPS Log I don&#8217;t ask this immediately on launch, as most people launch when the need to log a location, and rating an app is the last thing on your mind.  Instead I ask it after the user shares some entries. I figure at this point they&#8217;re just at home, or somewhere relaxing. I only show it to people who have bought the software too&#8230;</p>
<p><a href="http://www.davesenior.com/rune/2010/01/21/linking-directly-into-your-apps-reviews-in-the-app-store/  ">This guy</a> has some tips on getting the review URL.</p>
<p>Basically it boilds down to this:</p>
<p>http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=30000000&amp;pageNumber=0&amp;sortOrdering=1&amp;type=Purple+Software&amp;mt=8</p>
<p>Where 30000000 is your App ID.</p>
<p>I have no idea what &#8216;Purple+Software&#8217; is, but trying to replace it didn&#8217;t seem to help&#8230; so I just left it in.</p>
]]></content:encoded>
			<wfw:commentRss>http://omegadelta.net/2010/02/14/like-this-app-rate-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conroy wants Google to sensor YouTube for Australia like they do China</title>
		<link>http://omegadelta.net/2010/02/11/conroy-wants-google-to-sensor-youtube-for-australia-like-they-do-china/</link>
		<comments>http://omegadelta.net/2010/02/11/conroy-wants-google-to-sensor-youtube-for-australia-like-they-do-china/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 06:34:14 +0000</pubDate>
		<dc:creator>Will</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[censorship]]></category>
		<category><![CDATA[internet]]></category>

		<guid isPermaLink="false">http://omegadelta.net/?p=1548</guid>
		<description><![CDATA[Wake up Australia.  Internet censorship comparisons between China and Australia are no longer just interesting comparisons. Your communication minister is actually involking China&#8217;s policies to help try and get what he wants.
Read this Sydney Morning Herald article.
&#8220;Google at the moment filters an enormous amount of material on behalf of the Chinese government; they filter an [...]]]></description>
			<content:encoded><![CDATA[<p>Wake up Australia.  Internet censorship comparisons between China and Australia are no longer just interesting comparisons. Your communication minister is actually involking China&#8217;s policies to help try and get what he wants.</p>
<p>Read this <a href="http://www.smh.com.au/technology/technology-news/google-baulks-at-conroys-call-to-censor-youtube-20100211-ntm0.html">Sydney Morning Herald</a> article.</p>
<blockquote><p>&#8220;Google at the moment filters an enormous amount of material on behalf of the Chinese government; they filter an enormous amount of material on behalf of the Thai government.&#8221;</p>
<p>Google Australia&#8217;s head of policy, Iarla Flynn, said the company had a bias in favour of freedom of expression in everything it did and Conroy&#8217;s comparisons between how Australia and China deal with access to information were not &#8220;helpful or relevant&#8221;.</p></blockquote>
<p>Google continues:</p>
<blockquote><p>&#8220;The scope of RC is simply too broad and can raise genuine questions about restrictions on access to information. RC includes the grey realms of material instructing in any crime from [painting] graffiti to politically controversial crimes such as euthanasia, and exposing these topics to public debate is vital for democracy.&#8221;</p></blockquote>
<p>CORE weighs in on the fact that the filter doesn&#8217;t actually do what it&#8217;s meant to do anyway:</p>
<blockquote><p>This week the Computer Research and Education Association (CORE) put out a statement on behalf of all Australasian computer science lecturers and professors opposing the government&#8217;s internet filtering policy.</p>
<p>They said the filters would only block a fraction of the unwanted material available on the internet, be inapplicable to many of the current methods of online content distribution and create a false sense of security for parents.</p>
<p>CORE said the blacklist could be used by current and future governments to restrict freedom of speech, while those determined to get around the filters and access nasty content could do so with ease.</p></blockquote>
<p>I just donated some money to GetUp to help spread the word on this issue.  <a href="https://www.getup.org.au/campaign/SaveTheNet&amp;id=684">You can too</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://omegadelta.net/2010/02/11/conroy-wants-google-to-sensor-youtube-for-australia-like-they-do-china/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
