Concepts every senior iOS developer should know.

This is a summary of concepts, that every senior iOS developer should know (Not in the order of priority). Add “what to use, when” with every headers as you read.

Suggestions are welcome.

Different architecture patterns:

MVC, MVVM ,Clean Architecture ,Viper …

Different source control options:

Git, Subversion etc. Services like Github, GitLab ….

Different Dependency manager options:

Cocoapods,Carthage.

Different Data store Options:

Coredata, realm, xml, file, SQlite, FMDB, SQLCipher …..

Different choices in programming methodology:

Functional Reactive Programming, Object Oriented Programming, Protocol Oriented Programming
Frameworks : Reactive Cococa, Reactive Swift, RxSwift, RxCocoa…

Different choices in solution implementation:

Native, Hybrid etc.
Frameworks : Angualar2, ReactNative, Xamarin, Cordova …..

Different options to assure code quality:

DI, Unit testing, Test Automation, TDD, BDD, Styleguide, clang-format (automated style guide)
Frameworks :  XCTest, iOS Snapshot Test Case, KIF (iOS Integration Testing Framework)…

Different process to assure quality:

Effective Code reviews
Tools : Crucible, Atlassian Stash, Differentials
Frameworks : ObjcLinte, SwiftLint ….

Different Options to send push notifications:

APNS, Firebase, Thirdparty Options like Urban Airship…

Different Options to track user behavior + analytics:

Google Analytics

Different Options to track report and analyze app crashes:

Crashlytics, Fabric ….

Different Options to distribute apps for prod and test:

Enterprise vs Consumer facing (Apple Appstore), Hockey …..

Different Options to deploy apps remotely:

MobileIron, Airwatch….

Different Options for CICD:

Travis, Jenkins …..

Different Options to track the project:

JIRA, Phabricator …..

Concepts every senior iOS developer should know.

Creating split zip archive in mac

In terminal, execute the command below:

zip -r -s 64 archive.zip FolderName/

Note that the default unit is in MB. As per your need, you can use k(KB),g(GB) or t(tb).

For unarchiving, you may need to use third party tools such as Keka or Unarchiver.

Reference:

  1. http://www.addictivetips.com/mac-os/how-to-create-a-split-zipped-archive-from-mac-os-x-terminal/
  2. http://apple.stackexchange.com/questions/12371/how-can-i-compress-a-folder-into-multiple-zip-files
Creating split zip archive in mac

Installing certificates (.cer) in iOS devices

For a developer, installing  different certificates in iOS devices is a common work flow step.
There are many ways to do it but, here is one that I consider to be the easiest.

High level steps:

  1. Creation of an ad-hoc wifi network
  2. Running a simple web server
  3. Browse the directory in iDevice
  4. Installing the certificates

Detailed steps:

1. Creation of an ad-hoc wifi network

The ad-hoc network creation in my mac machine did not help me.  If it does not work for you, go ahead and create a hotspot and connect your iMac and iDevice to that wifi.

2. Running a simple web server

  • Open terminal in your mac.
  • Go the directory where you have the certs to be installed
  • Run the below command.
python -m SimpleHTTPServer
  • Open your the browser in your mac and try the below address
http://localhost:8000/

You should Ideally see something similar to the screen below:

localhost

Make a note of the IP address of your mac.

3.Browse the directory in iDevice

Open safari in the iDevice and enter the below url and tap go.
http://xx:xx:xx:xx:8000/
If everything works well, you should see something similar to this:

devicescreen
Now, select the certs that you want to install and follow the prompts thrown by iOS.

Enjoy!

Installing certificates (.cer) in iOS devices

Modifying File attribute in Bulk, Mac OSX

Here is a small snippet of shell script, that could be used if you want to change the file or folder attributes. Such as creation date or modified date.

find YOUR_DIRECTORY_NAME -print | while read filename; do
 # This will change the creation date of all the files under 'YOUR_DIRECTORY'
 SetFile -d '12/31/2015 04:12:45' "$filename"
 # This will change the Modified and Last opened date. 
 #Format : yyyymmddhhmm 
 touch -t 201512310537 "$filename"
done

Usage:

  1. Save the script in to a .sh file.
  2. Edit the two directory name and date variables as necessary.
  3. Make it executable by chmod a+x scriptName.sh
  4. Either drag in to the terminal app or make Terminal the default app to open.

Note: SetFile is a utility that comes with Xcode.

Reference:

How can I change the date modified/created of a file?

Modifying File attribute in Bulk, Mac OSX

Podcasts for iOS Developers

Of late, the time it takes to travel to work and back home has been steadily increasing.

One of the ideal options to make use of that time is to listen to technical podcasts.

Here is a list that I have prepared after some googling.

Sharing all of them here hoping that it may help someone else.

Name Website RSS Feed
Core Intuition coreint.org http://www.coreint.org/podcast.xml
NSBrief  http://nsbrief.com http://nsbrief.com/feeds/rss.xml
Debug http://www.imore.com/debug http://feeds.feedburner.com/debugshow
Code Radio http://www.jupiterbroadcasting.com/show/coderradio/ http://feeds.feedburner.com/coderradiomp3
This
developers life
http://thisdeveloperslife.com/ http://feeds.feedburner.com/thisdeveloperslife
Iterate http://www.imore.com/iterate http://feeds.feedburner.com/Iterate
Developing
Perspective
http://developingperspective.com/ http://developingperspective.com/feed/podcast/
iOhYes http://iohyespodcast.com/ http://feeds.5by5.tv/iohyes
iOSBytes http://bit.ly/1Oc2b9F https://iosbytes.codeschool.com/feed.rss
Immutable https://spec.fm/podcasts/immutable https://simplecast.com/podcasts/1332/rss
Runtime https://spec.fm/podcasts/runtime https://simplecast.com/podcasts/2070/rss
Layout http://layout.fm/ http://layout.fm/rss
Design Details http://www.brianlovin.com/design-details/ http://www.brianlovin.com/design-details/feed
ReleaseNotes http://bit.ly/1nfHZaf https://releasenotes.tv/feed/podcast/
MobileCouch http://mobilecouch.co/78 https://podcasts.jellystyle.com/mobilecouch/rss
Topical http://topical.fm/54 https://podcasts.jellystyle.com/topical/rss
The
RayWenderlich podcast
http://bit.ly/1fbOFRS https://www.raywenderlich.com/category/podcast/feed
The App Guy http://www.theappguy.co/ http://feeds.podtrac.com/Qr71nwJCw35C
iPhreaks http://devchat.tv/iphreaks https://feeds.feedwrench.com/JavaScriptJabber.rss
GetUpAndCode http://getupandcode.com/ http://feeds.feedblitz.com/getupandcode
Accidental
TechPodcast
http://atp.fm/ http://atp.fm/episodes?format=rss
The App Story http://www.appstorypodcast.com/ http://www.appstorypodcast.com/?format=rss
iDeveloper
Live
ideveloper.tv/podcast/ideveloperlive.html This
site canÕt be reached
Build and
Analyze 
5by5.tv/buildanalyze Retired
The talk show http://thetalkshow.net/ This
site canÕt be reached
IRQ Conflict irqconflict.net Forbidden
Buildphase http://bit.ly/1q9994F This site canÕt be reached
cocoaradio http://bit.ly/1rXPMLR This site canÕt be reached
The iDeveloper
Podacst
http://bit.ly/1mqVfdx This site canÕt be reached

 

 

Podcasts for iOS Developers