www.robkerr.com
www.robkerr.com

mobile development, cloud computing and building great software

Tags


Twitter


www.robkerr.com
Rob Kerr
Author

Rob Kerr

Addicted to coding since writing my first programs for the Commodore computers in the 1980s. Currently working as an independent contractor focused on native iOS development.

Benchmarking Xcode Builds

I recently started working with a fairly large iOS/Swift code base--one which takes several minutes to complete a full build from a clean folder. Since I have several macOS workstations on-hand, I naturally was curious how they compare in my most common use case--developing Swift iOS applications. Is there one that would give me less ti…

Rob KerrRob Kerr

60% Custom Apple Mechanical Keyboard Build

I started using computers in the golden age of keyboards -- which in my opinion is from about 1985 until 1995. To this day, if I'm considering a new computer, the first thing I do is some touch typing on the keyboard. If I don't like the keyboard, I really won't go any further. Since 1995 I've actually liked very few newly made keyboard…

Rob KerrRob Kerr

Should I build iOS or Android First?

When considering delivering a mobile experience to our customers or end-users, this is probably the first question that comes to mind. Perhaps you arrived on this page by Googling this very question! As of this writing, this question returns a list of over 22 million matches on Google! That many matching pages probably gives a hint that…

Rob KerrRob Kerr

Resolving pod Abort Trap: 6

CocoaPods is the go-to package manager for most of the iOS apps I've worked on. I really love it, and it makes live a lot easier. Until it makes it harder. Today I encountered a weird error updating Pods for an iOS app: Pod Abort Trap: 6. In addition, the .xcworkspace file Pod should have created wasn't created (or, in the case of a proj…

Rob KerrRob Kerr

Using the System Font Efficiently in iOS

Often an app designer specifies custom fonts out of a perceived need for uniqueness, but very often the built-in iOS system font is entirely appropriate. One advantage of the system-provided font is how simple it is to load them from code. Here's how to do it: Call systemFontOfSize When using the system font, call the static routine…

Rob KerrRob Kerr

Testing whether a view is currently visible

When manipulating iOS UI from background threads, or in response to NSNotification messages, you won't always be sure that the view your controller is working with is on-screen. How can you check? Relatively easy. Here's a simple check from within the context of a View's ViewController: if self.isViewLoaded() && self.view.window…

Rob KerrRob Kerr

Install Swift 3.0 on Ubuntu Linux 16.04 LTS

Since Apple released Swift to open source last year, there's been a grass roots movement to begin building a server-side ecosystem around Swift. Before doing any server-side development with Swift, though, it needs to be installed first! Below are the steps I took to install Swift 3.0 on my AWS EC2-based Ubuntu 16 LTS development server:…

Rob KerrRob Kerr

Facebook login using the iOS API with Swift

A common requirement for consumer mobile apps is to allow users to authenticate with their FaceBook credentials. Let's explore why, and then go ahead and make the integration with iOS and Swift Why use Facebook authentication? Why would we want to use Facebook auth instead of providing our own authentication database? Really it boils do…

Rob KerrRob Kerr

Swift 3.0 substrings made easy

Swift is a fantastic, modern language, and has fast become my favorite. So much of what's built into it is intuitive, simple and makes coding much more expressive than older, more syntactically heavy programming languages. But...sometimes its sophistication makes what was simple in older languages more complicated. Case in point is takin…

Rob KerrRob Kerr

Big Improvements in iOS10 Swift3 CoreData

Having a built-in relational database in iOS via CoreData is a pretty nice feature of the mobile OS. I've always liked using it, but like many developers I've never appreciated the volume of boilerplate code to create and maintain just to setup the basic scaffolding in a new project. As much as I appreciate CoreData being totally a "bui…

Rob KerrRob Kerr

Accessing AppDelegate in swift 1...3

We all learned in uni that global variables are undesirable, but most iOS applications need to access some global members of the shared UIApplication object. I appreciate that the syntax is getting better and better, but it's still a moving target and challenges my noodle to keep up. Here's a quick cheat sheet on accessing AppDelegate th…

Rob KerrRob Kerr

Swift 3.0 for loop syntax

If you've been programming for a while, whether you started with K&R C (like me!), or even C++ or Java, you're probably used to the following C-based for loop syntax: for (int i=0; i<10; i++) { printf("%d", i); } // printf() is called 10 times Since most of my coding is in Swift for the last few years, I've been adjusting to it…

Rob KerrRob Kerr

Checking out AWS CodeCommit

Recently the git cloud server landscape became very interesting with the announcement by GitHub that the new pricing would be much more friendly toward users with many private repositories. Probably one reason for this is that the alternatives out there for low cost git hosting keep expanding, and GitHub must have seen the writing on the…

Rob KerrRob Kerr

Designing for scale in a Cloud/Mobile/IoT world

Message queueing to provide application scalability has been a common pattern for decades. In the last few years a new term has been coined -- Internet of Things (IoT) that puts a brand name over highly scalable message-based computing. Why is IoT a thing? The emergence of the IoT "brand" demonstrates that a pattern needed in perhaps 1%…

Rob KerrRob Kerr

Connecting a Native Swift iOS App to Salesforce.com Data

Enterprise mobile apps most often need to integrate with broader platforms. This quickstart demonstrates how easy it is to integrate an iOS mobile app with the Salesforce.com platform. Install Node.js and npm If you haven't installed node on your system, you'll need to do this first. There are several methods for installing node. You ca…

Rob KerrRob Kerr