What is Polymorphism? … To begin to understand this concept, it’s helpful to know that the word polymorphism comes from the Greek meaning many shapes (or forms).  In the context of Object-Oriented Programming, this means the provision of a single interface to entities of different types.   The interface provided by the objects is the same, but what’s going... » read more

Alan Turing and the Decision Problem

Background In mathematics and computer science, the Entscheidungsproblem (“decision problem”) is a challenge posed by David Hilbert and Wilhelm Ackermann in 1928. David Hilbert was a well-known German mathematician, and together with his collaborator Wilhelm Ackermann they were influential figures in the mathematical community during the early 20th century. In their work titled “Grundzüge der... » read more

What’s New from Apple’s September Event

Apple just announced some new things – here’s the low down on what Apple revealed at their event. The first things covered at the event were some things we already knew about, but which, at the Event apple elaborated upon. Apple Arcade Highlighted first was Apple’s new Exclusive Games Platform for their devices – offering... » read more

Relational Databases and SQL

What is a Relational Database A Database is a collection of related data, and a Relational Database is a database that has “relations”. Where, formally, a relation is a subset of a cartesian product of sets. Informally, a relation is a “table” with rows and columns. Therefore, a “Relational Database” is a database that arranges... » read more

Designated Initializers vs Convenience Initializers (in Swift)

Initialization in Swift Initialization is the process of preparing an instance of a class, structure, or enumeration for use. This includes setting initial values for properties and performing any necessary setup. In Swift, initializers are special methods invoked to prepare an instance. Unlike Objective-C, Swift initializers don’t return a value. Their main purpose is to... » read more

Useful WWDC 2019 Sessions

In this article, I’ll aim to briefly outline some of the most interesting talks from WWDC 2019 along with a short summary of what they cover. This is a work in progress and I intend to continue to update and edit it to be more useful over the next week or two. If a talk... » read more

Unit Testing & Dependency Injection in Swift

Unlocking the Power of Unit Testing in Software Development In the intricate world of software development, how do we ensure that every piece of code we write functions as intended? Enter Unit Testing—a rigorous method dedicated to validating each fragment, or “unit”, of software. This approach isn’t just about verifying if a class or a... » read more

Using RESTful APIs in Swift

This article will cover how we go about using RESTful APIs in Swift: we’ll start by covering what a RESTful API actually is and move on to cover how we go from knowing we have one of these things available to actually being able to use it in our apps. The article is will not... » read more

Graphs & Graph Search Algorithms

A Graph is an important data structure in computer science; it is defined as a collection of nodes with “edges” between some of the nodes. When we talk about Graphs that category includes Trees, however not all Graphs are Trees. “Graphs arise in various real-world situations as there are road networks, computer networks and, most recently,... » read more

What are Protocols? How do We Use Them?

A protocol defines a “blueprint of methods, properties, and other requirements that suit a particular task or piece of functionality”. They can give also give nominal types polymorphic behavior. In Swift, the “protocol can then be adopted by a class, structure [a struct], or enumeration [an enum] to provide an actual implementation of those requirements.... » read more