Certificate Pinning for iOS Apps

What is Certificate Pinning? Certificate Pinning refers to a technique of associating a host with an expected X.509 certificate, which is a digital certificate using the accepted international X.509 Public Key Infrastructure standard. By creating such an association, a browser or app is able to detect a change in the certificate used by a host,... » read more

Lambda Calculus

The Lambda Calculus is an abstract mathematical theory of computation, involving functions, and can be thought of as being the theoretical foundation of Functional Programming. It is “a formal system in mathematical logic for expressing computation [where its notation is thus] based on function abstraction and application using variable binding and substitution“(Ref#: B). It was was... » read more

Using Optionals in Swift

The article will aim to answer the question: what’s the best way to unwrap optionals in Swift? To answer that question we will explore what optionals actually are, and why Swift uses them. We will then consider a couple of approaches for how you might want to be unwrapping them in your code with a... » read more

What’s New in Xcode 10

Apple has just released Xcode 10 at WWDC 2018. Let’s take a look at what new stuff can be found in this version of Xcode, which works alongside iOS 11. I’ll continue update this article over time as more details become apparent. Dark Mode The famously rumored dark-mode is coming to Mac OS Mojave and... » read more

Memory Management in Xcode

Let’s being with a quick refresher on how Swift and Objective-C work with memory management. Stack vs Heap It’s firstly important to know that value types (like structs) will be stored on “the stack”, whereas reference types (basically meaning classes) are dynamically managed on “the heap”. N.B. The terms “the stack” and “the heap” can... » read more

Singletons: For & Against

In this article we will explore the controversial topic of singletons. For some, this singleton pattern an anti-pattern to be avoided at all costs, for others they are just a way of handling situations where we want to restrict the instantiation of a particular class to one instance where we would want to be able... » read more

Trees (BSTs & RBTs)

A tree is a data structure with multiple branching, they are made up of nodes, and each tree has a root node, and each root node will have zero or more child nodes, and each child node in turn can also have zero or more child nodes etc. Nodes at the bottom of the tree,... » read more

Higher Order Functions (in Swift & Python etc)

Higher-Order Functions are functions that can take one or more functions as arguments, these functions may also return functions.  in other words they take one or more functions as arguments (i.e. procedural parameters), and/or returns a function as their results. Functions that are not higher-order functions are called first-order functions. For programmers, the first instances of... » read more

Fibonacci, the Golden Ratio & Memoization

Let’s begin by defining the two key topics which will be explored in this article: Firstly, the Fibonacci Sequence is a series of numbers where a given number is found by adding up the two numbers preceding it. The sequence reveals something about the deep laws of the universe, and as such it appears in many places in nature, including things like plants... » read more

Big-O Notation (Part II)

In this article, we continue to explore Big-O, which is a notation we use to describe algorithmic efficiency. If you haven’t read part one, you might like to read that part first. In the last article we talked about where Big-O notation came from, and what notation we might expect to discover for an efficient... » read more