<?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>Ary&#039;s Blog</title>
	<atom:link href="https://www.arytbk.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.arytbk.com</link>
	<description>Creative Mobile Apps</description>
	<lastBuildDate>Sun, 15 Sep 2019 10:25:19 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://www.arytbk.com/wp-content/uploads/2016/04/cropped-Ary-Tebeka-Avatar-32x32.png</url>
	<title>Ary&#039;s Blog</title>
	<link>https://www.arytbk.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>XCBlog-Top 5 Command Line Tools for iOS Developer</title>
		<link>https://www.arytbk.com/2017/04/27/xcblog-top-5-command-line-tools-for-ios-developer/</link>
		
		<dc:creator><![CDATA[Ary Tebeka]]></dc:creator>
		<pubDate>Thu, 27 Apr 2017 14:06:13 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://www.arytbk.com/2017/04/27/xcblog-top-5-command-line-tools-for-ios-developer/</guid>

					<description><![CDATA[Xcode comes with lot of command line tools which you can find at path each one has specific purpose but some of them are very important in day to day role of iOS Developers. Most iOS Developers like to do everything from GUI either Xcode or using third party GUI tools but skilled and experienced [&#8230;]]]></description>
										<content:encoded><![CDATA[<div>Xcode comes with lot of command line tools which you can find at path</p>
<p>each one has specific purpose but some of them are very important in day to day role of iOS Developers. Most iOS Developers like to do everything from GUI either Xcode or using third party GUI tools but skilled and experienced developer uses command line tools like boss. There are some useful tools that every iOS developer should know and few of them are prefixed with “XC”. In this post, let’s go through five of them.</p>
<h2>xcodebuild</h2>
<p>The command&nbsp;&nbsp; is a father of all the the commands in iOS development. You can do most of the iOS developer task like clean, analyse, build, test, archive with ‘xcodebuild’ command however you need to pass lot of option to ‘xcodebuild’ to get the right things done. You can explore these options using it’s man page</p>
<p>Or you can find all these useful information in the web page <a href="http://www.manpagez.com/man/1/xcodebuild/">here</a>. We can use xcodebuild to build, test &nbsp;and archive our project targets or schemes. The example of the ‘xcodebuild’ would be</p>
<p>The ‘xcodebuild’ is huge command and mastering it takes lot of time but once you know it then you can script anything related to iOS development.</p>
<h2>xcode-select</h2>
<p>Xcode has a active developer directory usually located at&nbsp;&nbsp; or we can set it with environmental DEVELOPER_DIR. The command &nbsp; is used to manage active developer directory of the Xcode so that we can manage two version of Xcode at the same time. We can switch between Xcode version&nbsp;e.g we want to use Xcode beta</p>
<p>We can also use ‘xcode-select’ to install Xcode command line tools with GUI interaction using command</p>
<h2>xcrun</h2>
<p>Xcode command line tools can be run easily with &nbsp; command. It gives us ability not only to find the tools but also execute them. We can use ‘xcrun’ to find the swift toolchain</p>
<p>We can execute most of the Xcode command tools using ‘xcrun’. The most useful tool that can be used with ‘xcrun’ would be ‘simctl’ to manage Simulators using command line. We can create, edit, erase and delete simulator using command line using ‘simctl’ e.g we can create</p>
<p>We can also delete, erase simulators using their identifiers. You can read more about xcrun <a href="http://www.manpagez.com/man/1/xcrun/">here</a></p>
<h2></h2>
<h2>xcscontrol</h2>
<p>Xcode Server is continuous Integration system provided by Apple. We can use &nbsp;to manage Xcode Server activities such as start, stop, restarting the sever. We can reset Xcode Server using</p>
<h2>xctest</h2>
<p>XCTest can be executed using &nbsp;&nbsp;however there is another tools we can use it for running our unit tests. We can use ‘xctest’&nbsp;to run unit tests.</p>
<p>There are so many tools available but we are going to cover only these tools as part of this post.</p>
<div></div>
</div>
<p class="curated_content"><a class="cs_link" href="http://shashikantjagtap.net/top-5-command-line-tools-ios-developer/" target="_blank" rel="nofollow noopener noreferrer">http://shashikantjagtap.net/top-5-command-line-tools-ios-developer/</a></p>
<p>&lt;</p>
<p>p class=&#8221;curated_content&#8221;&gt;On &#8211; 04 Apr, 2017 By Shashikant Jagtap</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>17 Xcode Tips and Tricks That Every iOS Developer Should Know</title>
		<link>https://www.arytbk.com/2017/04/27/17-xcode-tips-and-tricks-that-every-ios-developer-should-know/</link>
		
		<dc:creator><![CDATA[Ary Tebeka]]></dc:creator>
		<pubDate>Thu, 27 Apr 2017 14:06:11 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://www.arytbk.com/2017/04/27/17-xcode-tips-and-tricks-that-every-ios-developer-should-know/</guid>

					<description><![CDATA[iOS 17 Xcode Tips and Tricks That Every iOS Developer Should Know Elyse Turner #Swift #Development #Xcode Xcode can be overwhelming to iOS developers, especially newbies, but fear not! We are here to help. The number of things that Xcode can help with and allow you to do is astronomical. Being familiar with your IDE [&#8230;]]]></description>
										<content:encoded><![CDATA[<div style="margin-top:1em;margin-bottom:0.25em">
<div> <a href="/blog/tag/ios/">iOS</a> </div>
</p></div>
<div>
<h1> 17 Xcode Tips and Tricks That Every iOS Developer Should Know </p>
<div style="margin-top:20px;margin-left:2px"></div>
</h1></div>
<section>
<div>
<div>
<div> <img decoding="async" src="https://www.gravatar.com/avatar/8763fec4357e954a2180ee8d8f15b3b2?s=250&amp;d=mm&amp;r=x" alt="Elyse Turner"> <span><a href="/blog/author/elyse-turner/">Elyse Turner</a></span> </div>
<div> </div>
<div> <span><a href="/blog/tag/swift/">#Swift</a></span> <span><a href="/blog/tag/development/">#Development</a></span> <span><a href="/blog/tag/xcode/">#Xcode</a></span> </div>
</p></div>
<div>
<div><img decoding="async" src="https://dl-blog-uploads.s3.amazonaws.com/2017/Apr/dual_screen_1745705-1492006265590.png" alt=""></p>
<p>Xcode can be overwhelming to iOS developers, especially newbies, but fear not! We are here to help. The number of things that Xcode can help with and allow you to do is astronomical. Being familiar with your IDE is one of the easiest and best ways to sharpen your skills. </p>
<p>Here at Detroit Labs, we are no strangers to battling the mighty, mighty Xcode, and wanted to share our battle stories with you! After polling the Detroit Labs iOS developers, here are 17 of our favorite Xcode tips and tricks. </p>
<p><strong>Key Reference:</strong></p>
<ul>
<li>: Control</li>
<li>: Command</li>
<li>: Option </li>
<li>: Shift </li>
<li>: Return</li>
</ul>
<hr>
<p><strong>1)</strong> Moving a full line or many lines of code up or down using: to move up and to move down. If you have text selected, Xcode will move each line containing your selection; otherwise, it’ll move the line the cursor is in.</p>
<p><strong>2)</strong> Using tabs to stay organized/focused. Tabs can be configured individually and optimized for different use cases. Tabs can also be named and later used in behaviors.</p>
<p><strong>3)</strong> Using behaviors to display contextually helpful panes. </p>
<ul>
<li>Behaviors are essentially preferences for what Xcode does in response to certain events. Say you started a build; you can set a preference to open a pane in response to it succeeding, failing, starting to be debugged, etc. </li>
<li><strong>Fun fact:</strong> You can play a sound as a behavior when your tests fail. A developer here likes to set theirs to the failure sound from “The Price is Right.”</li>
</ul>
<p><strong>4)</strong> Open the file in the Assistant Editor. When using “Open Quickly” (), hold while also hitting return.</p>
<p><strong>5)</strong> when the cursor is inside a method performs the “Copy Qualified Symbol Name” command, which copies the method name in a nice, easily-pasteable format</p>
<p><strong>6)</strong> Effectively use inline documentation that can be parsed by Xcode to provide help when clicking on code/methods.</p>
<p><strong>7)</strong> Edit the name of a variable everywhere it appears in scope by hitting .</p>
<p><strong>8)</strong> Are you in a folder in Terminal and aren’t sure if your project uses Xcode workspaces or just a project file? Simply run “open -a Xcode .” to open the folder itself and Xcode will figure it out. Protip: Add this to your .bash_profile with a saucy name like ‘workit’ to feel like a real hacker.</p>
<p><strong>9)</strong> Shortcuts for showing and hiding things in Xcode.</p>
<ul>
<li>: show/hide debug area</li>
<li>: show assistant editor</li>
<li>: hide assistant editor</li>
</ul>
<p><strong>10)</strong> Auto-indent code by hitting </p>
<p><strong>11)</strong> <a href="http://www.cockos.com/licecap/">LICEcap</a> is really useful for making gifs of the simulator. It’s great for PR screenshots. On top of LICEcap, you can use QuickTime to share your hardware device on your screen (for a demo, or to use LICEcap to make a gif). With your iPhone or iPad plugged in, open QuickTime Player and go File -&gt; New Movie Recording. Then tap the down arrow next to the record button and select your connected device. This is useful for remote client demos, using LICEcap to make a gif, or actually recording your device for a PR. <img decoding="async" src="https://dl-blog-uploads.s3.amazonaws.com/2017/Apr/Screen_Shot_2017_04_12_at_11_41_31_AM-1492011708141.png" alt=""></p>
<p><strong>12)</strong> Hitting then clicking on a file in the Project navigator opens a selection box to allow you to choose where to open a file. </p>
<p><strong>13)</strong> Hold and click a file in the Project Navigator and it opens the file in the Assistant Editor.</p>
<p><strong>14)</strong> Think of the Navigator pane (which shows up on the left side of the Xcode window) as the “Command” pane. That’s because holding and pressing a number opens the corresponding “tab” within that pane. For instance, opens the Project Navigator. opens the Breakpoint Navigator. Similarly, think of the Utilities Panes as the “Command+Option” pane. opens the first tab in that pane, the File Inspector.</p>
<p><strong>15)</strong> and navigates among related files (e.g. .m and .h and .xib files).</p>
<p><strong>16)</strong> If you&#8217;re fighting with code signing and Xcode tells you that you don&#8217;t have a valid signing identity that matches the provisioning profile, it may show you a seemingly random code that may not look to mean much. Find-identity is useful for finding this. Security find-identity -v shows installed valid identities.</p>
<p><strong>17)</strong> Finding a file folder in your folder hierarchy is a HUGE waste of time. In Xcode 8, you can use the “Open Quickly&#8221; dialog or to save some time. When it’s open you can type any part of the file name you are looking for to find it. </p>
<p>Are you an iOS developer? See what it’s like to work here, and if you’re interested, <a href="https://detroitlabs.workable.com/j/F1D69FF0B5">apply</a>! </p>
</div></div>
</p></div>
</section>
<p class="curated_content"><a class="cs_link" href="https://www.detroitlabs.com/blog/2017/04/13/17-xcode-tips-and-tricks-that-every-ios-developer-should-know/" target="_blank" rel="nofollow noopener noreferrer">https://www.detroitlabs.com/blog/2017/04/13/17-xcode-tips-and-tricks-that-every-ios-developer-should-know/</a></p>
<p>&lt;</p>
<p>p class=&#8221;curated_content&#8221;&gt;On &#8211; 13 Apr, 2017 By Elyse Turner</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Understand the Blockchain in Two Minutes</title>
		<link>https://www.arytbk.com/2016/07/05/understand-the-blockchain-in-two-minutes/</link>
		
		<dc:creator><![CDATA[Ary Tebeka]]></dc:creator>
		<pubDate>Tue, 05 Jul 2016 08:11:40 +0000</pubDate>
				<category><![CDATA[Scoop.it]]></category>
		<guid isPermaLink="false">http://www.arytbk.com/?p=26</guid>

					<description><![CDATA[Over the past decade, an alternative digital paradigm has slowly been taking shape at the edges of the internet. This new paradigm is the blockchain. Afte]]></description>
										<content:encoded><![CDATA[<p><center><object width='100%' height='350'><param name="movie" value="https://www.youtube.com/v/r43LhSUUGTQ?fs=1&amp;hl=fr_FR"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed wmode="opaque" src="https://www.youtube.com/v/r43LhSUUGTQ?fs=1&amp;hl=fr_FR" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width='100%' height='350'></embed></object></center>Over the past decade, an alternative digital paradigm has slowly been taking shape at the edges of the internet. This new paradigm is the blockchain. AfteSourced through Scoop.it from: <a target='_blank' href='https://www.youtube.com/watch?v=r43LhSUUGTQ'>www.youtube.com</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>These are the top 10 emerging technologies of 2016</title>
		<link>https://www.arytbk.com/2016/07/05/these-are-the-top-10-emerging-technologies-of-2016/</link>
		
		<dc:creator><![CDATA[Ary Tebeka]]></dc:creator>
		<pubDate>Tue, 05 Jul 2016 08:04:57 +0000</pubDate>
				<category><![CDATA[Scoop.it]]></category>
		<guid isPermaLink="false">http://www.arytbk.com/?p=21</guid>

					<description><![CDATA[Breakthrough technologies, including “socially aware” artificial intelligence and new generation solar panels, could soon tackle the world’s most pressing challenges.]]></description>
										<content:encoded><![CDATA[<p>Breakthrough technologies, including “socially aware” artificial intelligence and new generation solar panels, could soon tackle the world’s most pressing challenges.</p>
<p>Sourced through Scoop.it from: <a href="https://www.weforum.org/agenda/2016/06/top-10-emerging-technologies-2016" target="_blank">www.weforum.org</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Improved Wiggling iOS 9 UICollectionView (Swift)</title>
		<link>https://www.arytbk.com/2016/04/13/improved-wiggling-ios-9-uicollectionview-swift/</link>
		
		<dc:creator><![CDATA[Ary Tebeka]]></dc:creator>
		<pubDate>Wed, 13 Apr 2016 12:15:09 +0000</pubDate>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Swift]]></category>
		<guid isPermaLink="false">https://www.arytbk.com/?p=17</guid>

					<description><![CDATA[With iOS 9 UICollectionView now has built-in drag and drop reorder. This is very easy to enable specially when using a UICollectionViewController. However there is no animation showing that the move operation started or finished, and worse there is no delegate call or notification to be informed of move start/end. So here is my UICollectionView subclass which [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>With iOS 9 UICollectionView now has built-in drag and drop reorder. <a href="http://nshint.io/blog/2015/07/16/uicollectionviews-now-have-easy-reordering/" target="_blank">This is very easy to enable</a> specially when using a UICollectionViewController.</p>
<p>However there is no animation showing that the move operation started or finished, and worse there is no delegate call or notification to be informed of move start/end.</p>
<p>So here is my UICollectionView subclass which adds:</p>
<ul>
<li>Wiggle animation while moving (taken from <a href="https://github.com/LiorNn/DragDropCollectionView" target="_blank">this library</a>)</li>
<li>isWiggling read-only property to check if collection view is currently moving a cell</li>
<li>Notifications at start and end of move</li>
</ul>
<p><em><strong>Here is the code</strong></em></p>
<pre class="lang:swift decode:true " title="Wiggling UICollectionView">//
//  WigglingCollectionView.swift
//
//  Created by Ary Tebeka on 19/07/15.
//  Copyright © 2015 Ary Tebeka. All rights reserved.
//

import UIKit

let WigglingCollectionViewStartedMovingNotification = "WigglingCollectionView.StartedMoving"
let WigglingCollectionViewFinishedMovingNotification = "WigglingCollectionView.FinishedMoving"

class WigglingCollectionView: UICollectionView {

    var isWiggling: Bool { return _isWiggling }
    
    private var _isWiggling = false

    override func beginInteractiveMovementForItemAtIndexPath(indexPath: NSIndexPath) -&gt; Bool {
        startWiggle()
        NSNotificationCenter.defaultCenter().postNotificationName(WigglingCollectionViewStartedMovingNotification, object: self)
        return super.beginInteractiveMovementForItemAtIndexPath(indexPath)
    }
    
    override func endInteractiveMovement() {
        super.endInteractiveMovement()
        stopWiggle()
        NSNotificationCenter.defaultCenter().postNotificationName(WigglingCollectionViewFinishedMovingNotification, object: self)
    }
    
    // Wiggle code below from https://github.com/LiorNn/DragDropCollectionView
    
    private func startWiggle() {
        for cell in self.visibleCells() {
            addWiggleAnimationToCell(cell as UICollectionViewCell)
        }
        _isWiggling = true
    }
    
    private func stopWiggle() {
        for cell in self.visibleCells() {
            cell.layer.removeAllAnimations()
        }
        _isWiggling = false
    }
    
    private func addWiggleAnimationToCell(cell: UICollectionViewCell) {
        CATransaction.begin()
        CATransaction.setDisableActions(false)
        cell.layer.addAnimation(rotationAnimation(), forKey: "rotation")
        cell.layer.addAnimation(bounceAnimation(), forKey: "bounce")
        CATransaction.commit()
    }
    
    private func rotationAnimation() -&gt; CAKeyframeAnimation {
        let animation = CAKeyframeAnimation(keyPath: "transform.rotation.z")
        let angle = CGFloat(0.04)
        let duration = NSTimeInterval(0.1)
        let variance = Double(0.025)
        animation.values = [angle, -angle]
        animation.autoreverses = true
        animation.duration = self.randomizeInterval(duration, withVariance: variance)
        animation.repeatCount = Float.infinity
        return animation
    }
    
    private func bounceAnimation() -&gt; CAKeyframeAnimation {
        let animation = CAKeyframeAnimation(keyPath: "transform.translation.y")
        let bounce = CGFloat(3.0)
        let duration = NSTimeInterval(0.12)
        let variance = Double(0.025)
        animation.values = [bounce, -bounce]
        animation.autoreverses = true
        animation.duration = self.randomizeInterval(duration, withVariance: variance)
        animation.repeatCount = Float.infinity
        return animation
    }
    
    private func randomizeInterval(interval: NSTimeInterval, withVariance variance:Double) -&gt; NSTimeInterval {
        let random = (Double(arc4random_uniform(1000)) - 500.0) / 500.0
        return interval + variance * random;
    }

}</pre>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Apple Watch ClockKit: Reload Complications Placeholder Templates</title>
		<link>https://www.arytbk.com/2016/04/13/apple-watch-clockkit-reload-complications-placeholder-templates/</link>
		
		<dc:creator><![CDATA[Ary Tebeka]]></dc:creator>
		<pubDate>Wed, 13 Apr 2016 12:14:27 +0000</pubDate>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[WatchKit]]></category>
		<guid isPermaLink="false">https://www.arytbk.com/?p=15</guid>

					<description><![CDATA[I just posted a radar to suggest an enhancement to the way ClockKit currently handles the placeholder templates for the Apple Watch complications. Here is the text I submitted: I am developing a watch app with complications that can be customised by the user. It would be nice for users to see a placeholder according to the [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I just posted a <a href="http://openradar.appspot.com/radar?id=5607034103791616" target="_blank">radar</a> to suggest an enhancement to the way ClockKit currently handles the placeholder templates for the Apple Watch complications.</p>
<p>Here is the text I submitted:</p>
<blockquote><p>I am developing a watch app with complications that can be customised by the user. It would be nice for users to see a placeholder according to the data and format they customised. Currently templates are loaded only once at app install. A great improvement would be an API call from the iPhone companion app to request reloading of all (or some) of the complication templates.</p></blockquote>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Swift: should a function Throw or return an Optional?</title>
		<link>https://www.arytbk.com/2016/04/13/swift-function-throw-return-optional/</link>
		
		<dc:creator><![CDATA[Ary Tebeka]]></dc:creator>
		<pubDate>Wed, 13 Apr 2016 12:13:30 +0000</pubDate>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Swift]]></category>
		<guid isPermaLink="false">https://www.arytbk.com/?p=13</guid>

					<description><![CDATA[Since Swift 2.0 we now have two ways for a function to fail: It can return an Optional Or it can Throw Let&#8217;s use a very simple example: a function to return the square root of a number. It is supposed to fail if the number was negative of course. Return an Optional func sqrt1(number: Float) -&#62; Float? [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Since Swift 2.0 we now have two ways for a function to fail:</p>
<ul>
<li>It can return an <strong>Optional</strong></li>
<li>Or it can <strong>Throw</strong></li>
</ul>
<p>Let&#8217;s use a very simple example: a function to return the square root of a number.<br />
It is supposed to fail if the number was negative of course.</p>
<h3>Return an Optional</h3>
<pre class="lang:swift decode:true" title="Using Optional">func sqrt1(number: Float) -&gt; Float? {
    guard(number &gt;= 0) else {
        return nil
    }
    return sqrt(number)
}

func use1() {
    if let result = sqrt1(17) {
        print(result)
    } else {
        print("Error")
    }
}</pre>
<p>Throw an exception</p>
<pre class="lang:swift decode:true " title="Throw">func sqrt2(number: Float) throws -&gt; Float {
    guard(number &gt;= 0) else {
        throw SqrtErrors.negativeNumber
    }
    return sqrt(number)
}

func use2() {
    do {
        let result = try sqrt2(17)
        print(result)
    } catch  {
        print("Error")
    }
}</pre>
<p>Which style do you prefer? The obvious advantage of &#8220;throw&#8221; is that we get an ErrorType with information on the reason of the failure.<br />
On the other side, Optional results can be chained and this can make it a much more convenient choice when we don&#8217;t care about the reason for failure.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Welcome</title>
		<link>https://www.arytbk.com/2016/04/13/welcome/</link>
		
		<dc:creator><![CDATA[Ary Tebeka]]></dc:creator>
		<pubDate>Wed, 13 Apr 2016 11:55:40 +0000</pubDate>
				<category><![CDATA[Dev]]></category>
		<guid isPermaLink="false">https://www.arytbk.com/?p=10</guid>

					<description><![CDATA[I am Ary Tebeka, serial entrepreneur and currently an Indie iOS dev (for the last 4 years). I’ll try to post in this blog things I discover while developing for iOS.]]></description>
										<content:encoded><![CDATA[<p>I am Ary Tebeka, serial entrepreneur and currently an Indie iOS dev (for the last 4 years). I’ll try to post in this blog things I discover while developing for iOS.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
