Great presentation by Warren Burton who goes over the pros and cons of refactoring an existing code base compared to rewriting it from scratch. A must watch for anyone who is maintaining other people’s codebase.
Check out this article that provides an interesting take on iOS development from the perspective of an Android developer. Some of the things that we take for granted as an iOS developer like storyboards and clean integration via XCode IDE are much appreciated by our counterparts.
If you work with a large team of developers you may be avoiding storyboards altogether because of inherent issues with merge conflicts and code reviews. Check out this article by Bruno Rocha who goes over how to avoid large UIViewController code by overriding loadView() method to load and attach your nib to the view.
If your app consumes a number of web services that serve JSON then check out this 5 part tutorial series where you will learn how to create a custom networking layer using Alamofire and understand how to use Codable to convert JSON to Swift data models (Classes & Structs)
Networking is one of the most popular features in iOS development but is also the most unintuitive for developers to write unit tests against it. Check out the linked article below to find out how to write unit tests for your networking piece of your code.
Check out this insightful article linked below to find out how to write unit tests for your networking piece of your code.
App reviews are highly opinion based and not fact based and normally not a great way to gauge if an app is good or bad. They sure can be helpful (for a developer), but most reviews are composed of biased rants and half-legible reviews which are hard to sift through. Sadly, most people judge an app just by looking at the app’s review scores even though it does not actually reflect the quality of an app.
People want to be heard, and giving a 1-star or 5-star rating adds oomph to your opinion.
Check out this fantastic article by John Saito who has sifted through 1000’s of app reviews to provide his take on app store reviews. Quote from the article:
After crunching the numbers, I found that over 70% of our app reviews were either 5-star or 1-star reviews. Over two-thirds of reviewers either loved or hated our app.
Apple has always been known to be a flag bearer for user privacy and the evidence for it is now even clearer with iOS 11. With iOS 11 if an app collects location data in the background, then a big ugly flashing blue bar shows up over the status bar.
If you have an app or planning to develop one that continuously scans user location, then check out the article linked below that details how to avoid it.
Whenever Apple releases a major new SDK version there are always a few features that capture the headlines in the developer community. With iOS 11, it was ARKit and CoreML. If you want to explore new SDK features beyond the headlines then check out the linked article below:
Refactoring code may not have any innate business value ( an exception being small performance optimization) and your business won’t immediately get better once refactoring is done. But refactoring is an essential part of software development and frequent refactoring is what keeps the code well oiled to prevent it from going obsolete.
Also, if you are working as part of a team and your team diligently conducts code reviews, then just the fact that your code will be assessed sends signals to the brain making you extra aware to maintain your code clean and keep it well optimized.
An ordered and clean environment, one that is maintained, sends the signal that the area is monitored and that criminal behavior is not tolerated. Conversely, a disordered environment, one that is not maintained (broken windows, graffiti, excessive litter), sends the signal that the area is not monitored and that criminal behavior has little risk of detection.
Check out this article linked below to find out how refactoring can greatly reduce your technical debt.
Here is an article that provides a whimsical take on the evil that is NSObject. If you use classes that inherit from UIKit classes then you directly or indirectly inherit from NSObject.
There are ways to stop this inheritance madness in your classes by marking them as final so it cannot be subclassed. It allows some compiler optimizations, and also makes the code more consistent by removing features that can be achieved in a more Swifty way like code reuse with protocol extensions, generics or composition and polymorphism with protocols.
With iOS 11, Apple is planning to introduce a slew of exciting new changes to the App Store and one big feature that stands out is auto playing app preview videos. Video previews will become extremely vital for developers going forward given how prominently placed app video previews are in the app store and well they portray the capabilities of your app (compared to plain screenshots). Also, if your app listing doesn’t have preview videos they will stand out like a sore thumb.
Check out this excellent article that covers in depth the benefits of including app preview videos in your app listing and some great tips.
Check out this great developer story of Marcelo Fabri and his quest to make teams work better with improved automation. He is a big contributor to many open source projects related to CI and tests, such as danger, Nimble-Snapshots and SwiftLint.
If you have been lassoed into the recent buzz surrounding Machine learning and are intrigued by Apple’s Core ML Framework you should read the article linked below before you start coding your next big app. While Core ML could work perfectly for a particular app, it doesn’t mean it will fit the needs of the app you are planning on building.
Core ML has many limitations and could mean a show stopper for many. Before you venture into the deep end, read the article below:
Apple introduced Core ML the new machine learning framework at WWDC 2017 and included with it is a new vision framework providing high-performance computer vision features for tasks such as image and face detection.
Check out this starter tutorial from Jeffrey Bergier who shows you how to get started with the Vision framework and perform object detection on a live video feed.
The battle for the best server-side framework is just getting started, and Vapor which is a server side framework implemented using pure Swift is giving the big guys a run for their money.
Vapor surprised us with how close it got to Go. The pure Swift HTTP server Vapor uses is thread based where as Go uses coroutines. Coroutines can be a lot faster but require additional libraries and setup. Its possible Vapor could adopt this type of parallelism in the future. (Read more about threads vs. coroutines in the code section).
Additionally, Swift on Linux is still beta and compiles with unoptimized toolchains. As the compiler nears production in the coming months, Swift has the possibility to dethrone Go.
In recent times the MVC (model-view-controller) design pattern has lost its place as a de facto pattern ever since better architectural patterns have come to light. MVC is now infamously called a Massive(or Messy)-View-Controller pattern, the reason for that is it’s very easy to pile up 1000+ lines of code inside a View controller. Even Apple is famous for shying away from following the MVC pattern in their sample code. MVVM (model-view-viewModel) is an architecture pattern that is an alternative to MVC which makes it easier to further isolate the UI specific responsibility of a ViewController to a View Model.
If you are new to MVVM and want to know more about how to implement one, then check out this great in-depth article by Erica Millado linked below.