<?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>jamie.co.za</title>
	<atom:link href="http://www.jamie.co.za/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jamie.co.za</link>
	<description>iPhone application development &#124; Cape Town</description>
	<lastBuildDate>Sun, 29 Jan 2012 06:19:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<div id='fb-root'></div>
					<script type='text/javascript'>
						window.fbAsyncInit = function()
						{
							FB.init({appId: 225523467481383, status: true, cookie: true, xfbml: true});
						};
						(function()
						{
							var e = document.createElement('script'); e.async = true;
							e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
							document.getElementById('fb-root').appendChild(e);
						}());
					</script>	
						<item>
		<title>iOS 5 Twitter Framework Integration</title>
		<link>http://www.jamie.co.za/2012/01/19/ios-5-twitter-framework-integration/</link>
		<comments>http://www.jamie.co.za/2012/01/19/ios-5-twitter-framework-integration/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 19:54:58 +0000</pubDate>
		<dc:creator>jamie</dc:creator>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[iphone dev]]></category>
		<category><![CDATA[objective c]]></category>
		<category><![CDATA[ios5]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[TWTweetComposeViewController]]></category>

		<guid isPermaLink="false">http://www.jamie.co.za/?p=336</guid>
		<description><![CDATA[One of the new features in iOS 5 that will save you a lot of time is the Twitter integration. The first thing you need to do is add the Twitter framework to your project. Then include the Twitter header file in your header #import Twitter/Twitter.h Next you need to create a TWTweetComposeViewController and set the [...]]]></description>
			<content:encoded><![CDATA[<p>One of the new features in iOS 5 that will save you a lot of time is the <a title="iOS 5 Twitter Integration" href="http://www.apple.com/ios/features.html#twitter" target="_blank">Twitter integration</a>.</p>
<p>The first thing you need to do is add the Twitter framework to your project.</p>
<p>Then include the Twitter header file in your header</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #339900;">#import Twitter/Twitter.h</span></pre></div></div>

<p>Next you need to create a <a title="TWTweetComposeViewController" href="http://developer.apple.com/library/ios/#documentation/Twitter/Reference/TWTweetSheetViewControllerClassRef/Reference/Reference.html" target="_blank">TWTweetComposeViewController</a> and set the text/link/image that you want to share.</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;">TWTweetComposeViewController <span style="color: #000040;">*</span>tweetSheet <span style="color: #000080;">=</span> <span style="color: #008000;">&#91;</span><span style="color: #008000;">&#91;</span>TWTweetComposeViewController alloc<span style="color: #008000;">&#93;</span> init <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#91;</span>tweetSheet setInitialText<span style="color: #008080;">:</span>@<span style="color: #FF0000;">&quot;Tweet Text&quot;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #008000;">&#91;</span>tweetSheet addImage<span style="color: #008080;">:</span><span style="color: #008000;">&#91;</span>UIImage imageNamed<span style="color: #008080;">:</span>@<span style="color: #FF0000;">&quot;yourimage&quot;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #008000;">&#91;</span>tweetSheet addURL<span style="color: #008080;">:</span><span style="color: #008000;">&#91;</span>NSURL URLWithString<span style="color: #008080;">:</span>@<span style="color: #FF0000;">&quot;http://www.jamie.co.za&quot;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
tweetSheet.<span style="color: #007788;">completionHandler</span> <span style="color: #000080;">=</span> <span style="color: #000040;">^</span><span style="color: #008000;">&#40;</span>TWTweetComposeViewControllerResult result<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #008000;">&#91;</span>self dismissModalViewControllerAnimated<span style="color: #008080;">:</span>YES<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #008000;">&#91;</span>self presentModalViewController<span style="color: #008080;">:</span>tweetSheet animated<span style="color: #008080;">:</span>YES<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span></pre></div></div>

<p>Thats all there is to it, simple and quick.</p>
<p>There is also a <a title="canSendTweet" href="http://developer.apple.com/library/ios/#documentation/Twitter/Reference/TWTweetSheetViewControllerClassRef/Reference/Reference.html#//apple_ref/occ/clm/TWTweetComposeViewController/canSendTweet" target="_blank">canSendTweet</a> function you can call to detect if the user has a twitter account setup on the device. The completionHandler will be called once the tweet has been sent.</p>
<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.jamie.co.za/2012/01/19/ios-5-twitter-framework-integration/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.jamie.co.za/2012/01/19/ios-5-twitter-framework-integration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MicroSIM Cutter</title>
		<link>http://www.jamie.co.za/2012/01/19/microsim-cutter/</link>
		<comments>http://www.jamie.co.za/2012/01/19/microsim-cutter/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 19:29:17 +0000</pubDate>
		<dc:creator>jamie</dc:creator>
				<category><![CDATA[iphone]]></category>
		<category><![CDATA[random]]></category>
		<category><![CDATA[iphone 4s]]></category>
		<category><![CDATA[microsim]]></category>
		<category><![CDATA[microsim cutter]]></category>
		<category><![CDATA[simcard]]></category>
		<category><![CDATA[simcard cutter]]></category>

		<guid isPermaLink="false">http://www.jamie.co.za/?p=326</guid>
		<description><![CDATA[The MicroSIM Cutter arrived today in preparation for my iPhone 4S which I ordered. I was a bit nervous at first, but it worked really well. It even came with 2 adapters so that you can still use your sim card in other devices. You can pick them up on bidorbuy, or www.microsimcutter.com &#160; &#160; &#160;]]></description>
			<content:encoded><![CDATA[<div id="attachment_327" class="wp-caption alignleft" style="width: 160px"><a href="http://www.jamie.co.za/wp-content/uploads/2012/01/2012-01-19-21.16.01.jpg" rel="lightbox[326]"><img class="size-thumbnail wp-image-327  " title="MicroSim Cutter" src="http://www.jamie.co.za/wp-content/uploads/2012/01/2012-01-19-21.16.01-150x150.jpg" alt="" width="150" height="150" /></a><a href="http://www.jamie.co.za/wp-content/uploads/2012/01/micro-sim-cutter.jpg" rel="lightbox[326]"><img title="micro-sim-cutter" src="http://www.jamie.co.za/wp-content/uploads/2012/01/micro-sim-cutter-150x150.jpg" alt="" width="150" height="150" /></a><p class="wp-caption-text">MicroSim Cutter</p></div>
<p>The MicroSIM Cutter arrived today in preparation for my iPhone 4S which I ordered. I was a bit nervous at first, but it worked really well. It even came with 2 adapters so that you can still use your sim card in other devices.</p>
<p>You can pick them up on <a href="http://www.bidorbuy.co.za" target="_blank">bidorbuy</a>, or <a href="http://www.microsimcutter.com/" target="_blank">www.microsimcutter.com</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.jamie.co.za/2012/01/19/microsim-cutter/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.jamie.co.za/2012/01/19/microsim-cutter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mobile Antivirus apps on scancomplete.com</title>
		<link>http://www.jamie.co.za/2011/07/31/mobile-antivirus-apps-on-scancomplete-com/</link>
		<comments>http://www.jamie.co.za/2011/07/31/mobile-antivirus-apps-on-scancomplete-com/#comments</comments>
		<pubDate>Sun, 31 Jul 2011 10:25:57 +0000</pubDate>
		<dc:creator>jamie</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[antispam]]></category>
		<category><![CDATA[antispyware]]></category>
		<category><![CDATA[antivirus]]></category>
		<category><![CDATA[blackberry]]></category>
		<category><![CDATA[freeware]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[mobile apps]]></category>
		<category><![CDATA[symbian]]></category>
		<category><![CDATA[windows mobile]]></category>

		<guid isPermaLink="false">http://www.jamie.co.za/?p=318</guid>
		<description><![CDATA[A new mobile apps section has been added to scan complete for anti virus, spam &#38; spyware apps. It covers Android, BlackBerry, Symbian and Windows Mobile. The number of apps is still relatively small but more will be added in the future. A lot of the older invalid apps have also been removed from the site. &#160;]]></description>
			<content:encoded><![CDATA[<p>A new <a title="Scan Complete Mobile apps" href="http://www.scancomplete.com/list/mobile/" target="_blank">mobile apps</a> section has been added to <a title="Scan Complete - Freeware Downloads" href="http://www.scancomplete.com" target="_blank">scan complete</a> for anti virus, spam &amp; spyware apps. It covers <a title="Android Apps" href="http://www.scancomplete.com/list/mobile/android/" target="_blank">Android</a>, <a title="BlackBerry Apps" href="http://www.scancomplete.com/list/mobile/blackberry/" target="_blank">BlackBerry</a>, <a title="Symbian Downloads" href="http://www.scancomplete.com/list/mobile/symbian/" target="_blank">Symbian</a> and <a title="Windows Mobile apps" href="http://www.scancomplete.com/list/mobile/windows-mobile-mobile/" target="_blank">Windows Mobile</a>.</p>
<p>The number of apps is still relatively small but more will be added in the future. A lot of the older invalid apps have also been removed from the site.</p>
<p>&nbsp;</p>
<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.jamie.co.za/2011/07/31/mobile-antivirus-apps-on-scancomplete-com/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.jamie.co.za/2011/07/31/mobile-antivirus-apps-on-scancomplete-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cut the Rope for Android</title>
		<link>http://www.jamie.co.za/2011/07/02/cut-the-rope-for-android/</link>
		<comments>http://www.jamie.co.za/2011/07/02/cut-the-rope-for-android/#comments</comments>
		<pubDate>Sat, 02 Jul 2011 11:56:42 +0000</pubDate>
		<dc:creator>jamie</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[physics-based]]></category>

		<guid isPermaLink="false">http://www.jamie.co.za/?p=310</guid>
		<description><![CDATA[The previously iOS-only game Cut the Rope is now available for Android. There is a free version on GetJar, or a paid version on the Android Market Cut the Rope is a physics based puzzle game. The basic idea is that there is a piece of candy tied to several pieces of rope which you [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_311" class="wp-caption alignleft" style="width: 160px"><a href="http://www.jamie.co.za/wp-content/uploads/2011/07/ss-480-3-8.jpeg" rel="lightbox[310]"><img class="size-thumbnail wp-image-311" title="ss-480-3-8" src="http://www.jamie.co.za/wp-content/uploads/2011/07/ss-480-3-8-150x150.jpg" alt="Cut The Rope" width="150" height="150" /></a><p class="wp-caption-text">Cut The Rope</p></div>
<p>The previously iOS-only game Cut the Rope is now available for Android.</p>
<p>There is a <a title="Cut The Rope Free" href="http://www.getjar.com/mobile/75206/cut-the-rope-free" target="_blank">free version</a> on GetJar, or a <a title="Cut The Rope" href="https://market.android.com/details?id=com.zeptolab.ctr.paid" target="_blank">paid version</a> on the Android Market</p>
<p>Cut the Rope is a physics based puzzle game. The basic idea is that there is a piece of candy tied to several pieces of rope which you must in the correct order, and at the right time to collect as many stars as possible. The end goal is to drop the candy into the green monsters (although could be a frog ?) mouth.</p>
<p>The iphone version can be <a title="Cut The Rope" href="http://itunes.apple.com/us/app/cut-the-rope/id380293530?mt=8" target="_blank">downloaded from iTunes</a></p>
<p>The game was developed by <a href="http://zeptolab.com/">ZeptoLab</a>.</p>
<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.jamie.co.za/2011/07/02/cut-the-rope-for-android/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.jamie.co.za/2011/07/02/cut-the-rope-for-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simultaneous Gesture Recognizers</title>
		<link>http://www.jamie.co.za/2011/05/26/simultaneous-gesture-recognizers/</link>
		<comments>http://www.jamie.co.za/2011/05/26/simultaneous-gesture-recognizers/#comments</comments>
		<pubDate>Thu, 26 May 2011 08:29:08 +0000</pubDate>
		<dc:creator>jamie</dc:creator>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[objective c]]></category>

		<guid isPermaLink="false">http://www.jamie.co.za/?p=283</guid>
		<description><![CDATA[To recognize 2 gestures simultaneously, such as to enable panning and rotating at the same time, there is a method called gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer: in the UIGestureRecognizerDelegate protocol. By default it returns NO so implement the method and return YES. &#160; - &#40;BOOL&#41; gestureRecognizer:&#40;UIGestureRecognizer *&#41;gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:&#40;UIGestureRecognizer *&#41;otherGestureRecognizer &#123; &#160; return YES; &#160; &#125;]]></description>
			<content:encoded><![CDATA[<p>To recognize 2 gestures simultaneously, such as to enable panning and rotating at the same time, there is a method called <a href="http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIGestureRecognizerDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIGestureRecognizerDelegate/gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:">gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:</a> in the <a href="http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIGestureRecognizerDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intf/UIGestureRecognizerDelegate">UIGestureRecognizerDelegate</a> protocol. By default it returns NO so implement the method and return YES.</p>
<p>&nbsp;</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span>BOOL<span style="color: #009900;">&#41;</span> gestureRecognizer<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span>UIGestureRecognizer <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span>UIGestureRecognizer <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>otherGestureRecognizer <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #b1b100;">return</span> YES<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div>

<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.jamie.co.za/2011/05/26/simultaneous-gesture-recognizers/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.jamie.co.za/2011/05/26/simultaneous-gesture-recognizers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Custom UINavigationBar</title>
		<link>http://www.jamie.co.za/2011/04/07/custom-uinavigationbar/</link>
		<comments>http://www.jamie.co.za/2011/04/07/custom-uinavigationbar/#comments</comments>
		<pubDate>Thu, 07 Apr 2011 17:08:08 +0000</pubDate>
		<dc:creator>jamie</dc:creator>
				<category><![CDATA[objective c]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[UINavigationBar]]></category>

		<guid isPermaLink="false">http://www.jamie.co.za/?p=284</guid>
		<description><![CDATA[Since I&#8217;ve moved over to just doing mobile dev (iPhone/iOS specifically), I thought I&#8217;d start occasionally posting some Objective-C code snippets. Coming from a PHP background its been a bit of a learning curve. This is a simple Category to create a custom UINavigationBar inorder to apply it to the entire app. I only needed to set [...]]]></description>
			<content:encoded><![CDATA[<div>Since I&#8217;ve moved over to just doing mobile dev (iPhone/iOS specifically), I thought I&#8217;d start occasionally posting some Objective-C code snippets. Coming from a PHP background its been a bit of a learning curve.<br/><br />
This is a simple <a title="Objective C Categories" href="http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocCategories.html#//apple_ref/doc/uid/TP30001163-CH20-SW1" target="_blank">Category</a> to create a custom UINavigationBar inorder to apply it to the entire app. I only needed to set a background image so its really simple.</div>
<p>&nbsp;</p>
<p>UINavigationBarSilver.h</p>

<div class="wp_syntax"><div class="code"><pre class="objectivec" style="font-family:monospace;">#import 
&nbsp;
@interface UINavigationBar (UINavigationBarSilver)
&nbsp;
@end</pre></div></div>

<div>UINavigationBarSilver.m</div>

<div class="wp_syntax"><div class="code"><pre class="objectivec" style="font-family:monospace;">#import &quot;UINavigationBarSilver.h&quot;
&nbsp;
@implementation UINavigationBar (UINavigationBarSilver)
&nbsp;
- (void)drawRect:(CGRect)rect {
	UIColor *color = [UIColor clearColor];
	UIImage *img	= [UIImage imageNamed: @&quot;top_nav_bg.png&quot;];
	[img drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
	self.tintColor = color;
}
&nbsp;
@end</pre></div></div>

<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.jamie.co.za/2011/04/07/custom-uinavigationbar/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.jamie.co.za/2011/04/07/custom-uinavigationbar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Leaked Gingerbread Rom (2.3.2) for the Samsung Galaxy S</title>
		<link>http://www.jamie.co.za/2011/03/01/leaked-gingerbread-rom-2-3-2-for-the-samsung-galaxy-s/</link>
		<comments>http://www.jamie.co.za/2011/03/01/leaked-gingerbread-rom-2-3-2-for-the-samsung-galaxy-s/#comments</comments>
		<pubDate>Tue, 01 Mar 2011 06:47:19 +0000</pubDate>
		<dc:creator>jamie</dc:creator>
				<category><![CDATA[android]]></category>

		<guid isPermaLink="false">http://www.jamie.co.za/?p=278</guid>
		<description><![CDATA[A beta version of the 2.3 Gingerbread Rom for the Samsung Galaxy S was leaked yesterday. More info here Download here]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.jamie.co.za/wp-content/uploads/2011/03/gingerbread_galaxy_s-180x300.png" rel="lightbox[278]"><img class="alignleft size-thumbnail wp-image-279" title="gingerbread_galaxy_s-180x300" src="http://www.jamie.co.za/wp-content/uploads/2011/03/gingerbread_galaxy_s-180x300-150x150.png" alt="" width="150" height="150" /></a> A beta version of the 2.3 Gingerbread Rom for the Samsung Galaxy S was leaked yesterday. More info <a title="Samsung Galaxy S Gingerbread" href="http://digitwo.com/02/28/articles/gingerbread-beta-leaked-for-samsung-galaxy-s/" target="_blank">here</a></p>
<p><a title="Download Samsung Galaxy S Gingerbread Rom" href="http://www.multiupload.com/OH1LRZDN3N" target="_blank">Download here</a></p>
<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.jamie.co.za/2011/03/01/leaked-gingerbread-rom-2-3-2-for-the-samsung-galaxy-s/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.jamie.co.za/2011/03/01/leaked-gingerbread-rom-2-3-2-for-the-samsung-galaxy-s/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android Market in South Africa</title>
		<link>http://www.jamie.co.za/2010/11/26/android-market-in-south-africa/</link>
		<comments>http://www.jamie.co.za/2010/11/26/android-market-in-south-africa/#comments</comments>
		<pubDate>Fri, 26 Nov 2010 11:18:32 +0000</pubDate>
		<dc:creator>jamie</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[random]]></category>
		<category><![CDATA[market place]]></category>
		<category><![CDATA[south africa]]></category>

		<guid isPermaLink="false">http://www.jamie.co.za/?p=267</guid>
		<description><![CDATA[This is probably just a glitch, but I&#8217;m seeing paid apps in my market place, and they&#8217;re listed in Rands. Although is not showing up on other phones and I get an error when I try buy using Google Checkout. I don&#8217;t  have MarketEnabler on.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.jamie.co.za/wp-content/uploads/2010/11/198711573.png" rel="lightbox[267]"><img class="alignleft size-thumbnail wp-image-268" style="padding: 0 10px 10px 0;" title="Android Market Place" src="http://www.jamie.co.za/wp-content/uploads/2010/11/198711573-150x150.png" alt="" width="150" height="150" /></a>This is probably just a glitch, but I&#8217;m seeing paid apps in my market place, and they&#8217;re listed in Rands. Although is not showing up on other phones and I get an error when I try buy using Google Checkout.</p>
<p>I don&#8217;t  have MarketEnabler on.</p>
<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.jamie.co.za/2010/11/26/android-market-in-south-africa/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.jamie.co.za/2010/11/26/android-market-in-south-africa/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Backup Mysql database to Amazon S3 using Python</title>
		<link>http://www.jamie.co.za/2010/11/23/backup-mysql-database-to-amazon-s3-using-python/</link>
		<comments>http://www.jamie.co.za/2010/11/23/backup-mysql-database-to-amazon-s3-using-python/#comments</comments>
		<pubDate>Tue, 23 Nov 2010 06:38:56 +0000</pubDate>
		<dc:creator>jamie</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[random]]></category>
		<category><![CDATA[amazon S3]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.jamie.co.za/?p=234</guid>
		<description><![CDATA[I wrote this script to do nightly backups of a mysql database to an Amazon S3 account. It&#8217;s the first bit of python I&#8217;ve ever done so please excuse any obvious mistakes. It uses the Amazon S3 Library for REST in Python by EricW@AWS, which you can download here The script does a mysqldump, compresses [...]]]></description>
			<content:encoded><![CDATA[<p>I wrote this script to do nightly backups of a mysql database to an <a href="http://aws.amazon.com/s3/" target="_blank"><strong>Amazon S3</strong></a><strong> </strong>account. It&#8217;s the first bit of python I&#8217;ve ever done so please excuse any obvious mistakes.</p>
<p>It uses the <a href="http://aws.amazon.com/code/134?_encoding=UTF8&amp;jiveRedirect=1" target="_blank"><strong>Amazon S3 Library for REST in Pytho</strong><strong>n</strong></a> by EricW@AWS, which you can download <a href="http://s3.amazonaws.com/doc/s3-example-code/s3-example-python-library.zip">here</a></p>
<p>The script does a mysqldump, compresses it and sends it to the S3 account. the KEEP var is the number days worth of backups you want to keep. It will delete the backup file which matches (today &#8211; KEEP). Its not ideal but it works for me.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">datetime</span> <span style="color: #ff7700;font-weight:bold;">import</span> date, timedelta
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">subprocess</span>, <span style="color: #dc143c;">tarfile</span>, <span style="color: #dc143c;">os</span>, S3
&nbsp;
<span style="color: #808080; font-style: italic;">#Mysql</span>
mysql_user = <span style="color: #483d8b;">&quot;{DB USER}&quot;</span>
mysql_pass = <span style="color: #483d8b;">&quot;{DB PASS}&quot;</span>
mysql_db = <span style="color: #483d8b;">&quot;{DB NAME}&quot;</span>
mysql_host = <span style="color: #483d8b;">&quot;{DB HOST}&quot;</span>
mysql_dump = <span style="color: #483d8b;">&quot;mysqldump&quot;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#S3</span>
AWS_ACCESS_KEY_ID = <span style="color: #483d8b;">&quot;{AWS_ACCESS_KEY_ID}&quot;</span>
AWS_SECRET_ACCESS_KEY = <span style="color: #483d8b;">&quot;{AWS_SECRET_ACCESS_KEY}&quot;</span>
&nbsp;
BUCKET_NAME = <span style="color: #483d8b;">&quot;{BUCKET NAME}&quot;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#path name, leave empty if not required</span>
FOLDER = <span style="color: #483d8b;">&quot;mysql-backup/&quot;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#number days worth of backups to keep</span>
KEEP = <span style="color: #ff4500;">5</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#Output</span>
output_dir = <span style="color: #483d8b;">&quot;/tmp/&quot;</span>
output_file = <span style="color: #483d8b;">&quot;db-&quot;</span> + <span style="color: #008000;">str</span><span style="color: black;">&#40;</span>date.<span style="color: black;">today</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span> + <span style="color: #483d8b;">&quot;.sql&quot;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;start mysqldump...&quot;</span>
&nbsp;
<span style="color: #dc143c;">subprocess</span>.<span style="color: black;">call</span><span style="color: black;">&#40;</span> mysql_dump + <span style="color: #483d8b;">&quot; --user &quot;</span> + mysql_user + <span style="color: #483d8b;">&quot; --password=&quot;</span> + mysql_pass + <span style="color: #483d8b;">&quot; --add-locks --flush-privileges --add-drop-table --complete-insert --extended-insert --single-transaction --database &quot;</span> + mysql_db + <span style="color: #483d8b;">&quot; &amp;gt; &quot;</span> + output_dir + output_file, shell=<span style="color: #008000;">True</span> <span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;compressing &quot;</span> + output_file + <span style="color: #483d8b;">&quot;...&quot;</span>
&nbsp;
tar_file = output_file + <span style="color: #483d8b;">&quot;.tar.gz&quot;</span>
&nbsp;
tar = <span style="color: #dc143c;">tarfile</span>.<span style="color: #008000;">open</span><span style="color: black;">&#40;</span> output_dir + tar_file , <span style="color: #483d8b;">&quot;w|gz&quot;</span><span style="color: black;">&#41;</span>
tar.<span style="color: black;">add</span><span style="color: black;">&#40;</span>output_dir + output_file<span style="color: black;">&#41;</span>
tar.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
tar_data = <span style="color: #008000;">open</span><span style="color: black;">&#40;</span> output_dir + tar_file , <span style="color: #483d8b;">&quot;rb&quot;</span><span style="color: black;">&#41;</span>.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;uploading to S3...&quot;</span>
&nbsp;
conn = S3.<span style="color: black;">AWSAuthConnection</span><span style="color: black;">&#40;</span> AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY <span style="color: black;">&#41;</span>
&nbsp;
response = conn.<span style="color: black;">put</span><span style="color: black;">&#40;</span> BUCKET_NAME, FOLDER + tar_file, S3.<span style="color: black;">S3Object</span><span style="color: black;">&#40;</span> tar_data <span style="color: black;">&#41;</span> <span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> response.<span style="color: black;">http_response</span>.<span style="color: black;">status</span> == <span style="color: #ff4500;">200</span> :
&nbsp;
	oldest_backup = <span style="color: #483d8b;">&quot;db-&quot;</span> + <span style="color: #008000;">str</span><span style="color: black;">&#40;</span> date.<span style="color: black;">today</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - timedelta<span style="color: black;">&#40;</span>days=KEEP<span style="color: black;">&#41;</span> <span style="color: black;">&#41;</span> + <span style="color: #483d8b;">&quot;.sql.tar.gz&quot;</span>
&nbsp;
	response = conn.<span style="color: black;">delete</span><span style="color: black;">&#40;</span>BUCKET_NAME, FOLDER + oldest_backup<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">else</span>:
&nbsp;
    <span style="color: #808080; font-style: italic;">#should probably send an email here</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Error : &quot;</span>+response.<span style="color: black;">message</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;deleting temporary files...&quot;</span>
&nbsp;
<span style="color: #dc143c;">os</span>.<span style="color: black;">remove</span><span style="color: black;">&#40;</span>output_dir + output_file<span style="color: black;">&#41;</span>
<span style="color: #dc143c;">os</span>.<span style="color: black;">remove</span><span style="color: black;">&#40;</span>output_dir + tar_file<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;complete&quot;</span></pre></div></div>

<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.jamie.co.za/2010/11/23/backup-mysql-database-to-amazon-s3-using-python/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.jamie.co.za/2010/11/23/backup-mysql-database-to-amazon-s3-using-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bricked Samsung Galaxy S</title>
		<link>http://www.jamie.co.za/2010/11/19/bricked-samsung-galaxy-s/</link>
		<comments>http://www.jamie.co.za/2010/11/19/bricked-samsung-galaxy-s/#comments</comments>
		<pubDate>Fri, 19 Nov 2010 18:27:25 +0000</pubDate>
		<dc:creator>jamie</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[bricked]]></category>
		<category><![CDATA[galaxy s]]></category>
		<category><![CDATA[samsung]]></category>

		<guid isPermaLink="false">http://www.jamie.co.za/?p=189</guid>
		<description><![CDATA[This guide applies to the Galaxy&#8217;s that Samsung so annoyingly decided to disable the 3 button recovery mode. If you have bricked your device but have managed to use the 3 button recovery before, this youtube video might help you. Otherwise, keep reading. So the other day I decided I would flash my device instead [...]]]></description>
			<content:encoded><![CDATA[<p>This guide applies to the Galaxy&#8217;s that Samsung so annoyingly decided to disable the 3 button recovery mode. If you have bricked your device but have managed to use the 3 button recovery before,<a href="http://www.youtube.com/watch?v=9nMCBbdAcHU"> <strong>this youtube video</strong></a> might help you. Otherwise, keep reading.</p>
<p><a href="http://www.jamie.co.za/wp-content/uploads/2010/11/SNC005621.jpg" rel="lightbox[189]"><img class="alignleft size-thumbnail wp-image-221" title="SNC00562" src="http://www.jamie.co.za/wp-content/uploads/2010/11/SNC005621-150x150.jpg" alt="" width="150" height="150" /></a> So the other day I decided I would flash my device instead of waiting for the official Android 2.2 release for Africa. Even though its already released in other countries, we obviously have to wait for Vodacom to put their branding crap all over it. This should have been a fairly simple procedure but half way through upgrading using Odin, everything just froze. I left it for a while then eventually unplugged it. When I tried to turn the phone back on all I got was the Phone-!-PC screen or Black screen of death.</p>
<p>If you watched the youtube video above you&#8217;ll see this normally shouldn&#8217;t be much of a problem, but as my phone falls into the no-3-button mode I was pretty screwed. After stressing out for a few minutes I headed over to the XDA forums and found <a href="http://forum.xda-developers.com/showthread.php?t=819551&amp;page=1" target="_blank"><strong>this very, very useful post</strong></a>. It explains what to do in my situation and while it requires a bit of work, its worth it in the end. I highly recommend you go <a href="http://forum.xda-developers.com/showthread.php?t=819551&amp;page=1" target="_blank"><strong>read it</strong></a>.</p>
<p>The post describes how to build a test jig which will force your phone into download mode. It also mentions places where you can buy the components needed, but obvisouly it&#8217;s not ideal for anyone from SA because you&#8217;re probably looking at at least a months delivery time. So this is what I did:</p>
<div id="attachment_222" class="wp-caption alignleft" style="width: 160px"><a href="http://www.jamie.co.za/wp-content/uploads/2010/11/SNC005651.jpg" rel="lightbox[189]"><img class="size-thumbnail wp-image-222" style="padding: 5px;" title="SNC00565" src="http://www.jamie.co.za/wp-content/uploads/2010/11/SNC005651-150x150.jpg" alt="MicroUSB Plug" width="150" height="150" /></a><p class="wp-caption-text">MicroUSB Plug</p></div>
<p><strong> 1. A microUSB plug<br />
</strong> I came very close to cutting up my wall charger to get to the plug, but instead headed down the the Muizenburg craft market (the one every sunday). From there you can pick up a generic charger for virtually nothing (R25 &#8211; R30). It doesn&#8217;t matter what phone it&#8217;s for as long as it has a microUSB plug. I bought a wall charger &amp; a car charger but the car charger didn&#8217;t have the 4th pin so I&#8217;d recommend a wall charger. Whats nice about these ones is that the microUSB plug is housed in a plastic casing that easily pops open. It&#8217;s much easier than having to slice away at the rubber ones.</p>
<div id="attachment_223" class="wp-caption alignleft" style="width: 160px"><a href="http://www.jamie.co.za/wp-content/uploads/2010/11/SNC005691.jpg" rel="lightbox[189]"><img class="size-thumbnail wp-image-223" style="padding: 5px;" title="SNC00569" src="http://www.jamie.co.za/wp-content/uploads/2010/11/SNC005691-150x150.jpg" alt="300k Resistor, 1k Resistor, MicroUSB Plug" width="150" height="150" /></a><p class="wp-caption-text">300k Resistor, 1k Resistor, MicroUSB Plug</p></div>
<p><strong> 2. Resistors (combined resistance of 301K)</strong><br />
I struggled to find these at first. The electronics shop closest to my house didn&#8217;t have them and all the bigger stores are way too far away and would require taking time away from my weekend. I decided to order off <a href="http://www.rabtron.co.za"><strong>Rabtron</strong></a> because they had everything I needed. As the resistors are only like 16c, I ended up buying <a href="http://shop.rabtron.co.za/catalog/resistor-100k-025w-10pack-p-1283.html" target="_blank"><strong>10 x 100k resistors</strong></a>,<strong> <a href="http://shop.rabtron.co.za/catalog/025w-p-2095.html" target="_blank">10 x 1k resistors</a> </strong>and <a href="http://shop.rabtron.co.za/catalog/300k-025w-p-5520.html" target="_blank"><strong>10 x 300k resistors</strong></a>, just to full up the order a bit. The total was still only R4.60 which made paying R30 for delivery a bit painful.</p>
<p>I ended up going with 1 x 300k &amp; 1 x 1k resistor. I soldered them together then soldered the ends to pin 4 &amp; 5. I plugged it in and after about 3 seconds it kicked it into download mode. From there you can flash any firmware you want.</p>
<p><a href="http://www.jamie.co.za/wp-content/uploads/2010/11/SNC005711.jpg" rel="lightbox[189]"><img class="size-thumbnail wp-image-225 alignnone" style="padding: 5px;" title="SNC00571" src="http://www.jamie.co.za/wp-content/uploads/2010/11/SNC005711-150x150.jpg" alt="" width="150" height="150" /></a><a href="http://www.jamie.co.za/wp-content/uploads/2010/11/SNC005702.jpg" rel="lightbox[189]"><img class="alignnone size-thumbnail wp-image-227" title="SNC00570" src="http://www.jamie.co.za/wp-content/uploads/2010/11/SNC005702-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p><a href="http://www.jamie.co.za/wp-content/uploads/2010/11/SNC005701.jpg" rel="lightbox[189]"><br />
</a></p>
<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.jamie.co.za/2010/11/19/bricked-samsung-galaxy-s/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.jamie.co.za/2010/11/19/bricked-samsung-galaxy-s/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

