# Functional Programming: recursion and tail call optimization (TCO)

Ever heard about The Tower of Hanoi? It’s a famous puzzle when you have a stack of disks with different sizes and 3 rods that you are required to move all disks from one starting rod into another. Although this problem is difficult for most people when they first know about it, it can be easily solved by using recursion.

Recursion is a widely used technique in programming. It’s one of the choices to be used to solve the divide-and-conquer problems. By definition, recursion is the method of solving a problem by dividing it into smaller pieces. …

# Functional Programming in Swift: currying and partial function

In this section, currying and partial function will be the main topic to discuss.

Not only in programming, but currying is also a common term in mathematics. It is the process to transform a function that accepts multiple parameters to a sequence of multiple functions that each of them accepts a single argument.

Take an easy example. We have a function that returns the sum of 2 numbers:

f(x, y) = x + y

We can define a function h such that

h = x + y = f(x, y)

hx(y) = x + y = hy(x)

Explain: the function…

# Functional Programming in Swift: stateless and immutable data

You might heard about this before — Function Programming. Wait, aren’t we using function everyday? What is the difference?

Look at this example

This is a simple piece of code. What it does is to filter out the even number in a given array, sort them in ascending order and print out to console. How much time do you need to read and understand the code? Let me guess, at least 30s.

In less than 5s, you should now the purpose of this code. It returns the same result but less code and more readable…

# How to apply Single for network request in Swift

Reactive programming has became popular as a useful programming paradigm for all developers in the world. It provides many concepts and tools for us to make our life easier.

To talk about Single, as describe in ReactiveX website:

A Single is something like an Observable, but instead of emitting a series of values — anywhere from none at all to an infinite number — it always either emits one value or an error notification.

Single is really useful when you want to subscribe to something once, and it only has 2 states: either success or failure. …

# Protobuf in Swift

Protobuf, or called by its original name Protocol Buffers, is Google (not newly) invention that is created to resolve the weakness of XML. It is a method for serialization and deserialization structured data. To have a better sense of what Protobuf is, let’s take a look at this example.

You have been assigned a task from your team lead to implement a function to create and retrieve a list of order. This is the steps that often taken to implement:

1. Cross team discussion about the requirement and dependencies
2. Create a prototype for data structure to communicate between frontend and backend

# 4 ways to check if a range contains a value in Swift

Swift is a very powerful programming language and it makes developer’s life much easier since its birth. In this topic I’m gonna show 4 different ways to check if a value is in a range.

Suppose we have a value = 10, and we want to check if it is in range from 4 to 20.

• Pattern matching operator ~=
• .contains method
• if case
• switch case

# iOS SSL pinning

SSL stands for Secure Socket Layer, which is a protocol for creating an encrypted connection between client and server. It ensures that all data pass in network will be private and integral.

How SSL works? When client establishes the connection with server (called SSL handshake):

1. Client connects to server and requests server identify itself.
2. Server sends certificate to client (include public key)
3. Client checks if that certificate is valid. If it is, client creates a symmetric key (session key), encrypts with public key, then sends back to server
4. Server receives encrypted symmetric key, decrypts by its private key, then sends…

# Swift sequence higher order functions: filter, map, flatMap and reduce

Any of us must have a chance to work with sequence in Swift. And we must also experienced with tasks such as calculate sum of an array, or find odd items in the list. Me also. Before I knew about these higher order functions, I always have to write code to iterate through the entire array. But since I learned how to use this, I felt myself in the past was so stupid (now still stupid, but less).

Let’s start. First, what is higher order function? Here’s the definition from Wikipedia:

In mathematics and computer science, a higher-order function (also…

# Air debugging in Xcode 9 and iOS 11

Today, Apple officially launched the new version of iOS — iOS 11. Along with that, they also release the new Xcode 9 yesterday. One of the great feature in this new IDE is wireless debugging. In this article I will show how to use this awesome feature.

Let’s me give a list of annoying things when living with wires and cables:

1. As we all know, a laptop usually have 1–2 ports. But we have a ton of things to connect such as keyboard, mouse, screen, smartphone,… Too many devices but too few connect ports. How to solve this problem? …

# GraphQL in iOS — Part 2: Use GraphQL in iOS

This is the part that will show how to integrate GraphQL to your iOS application. We will use Apollo, a framework that allows you to query, mutate GraphQL server and returns results as Swift types.

1. Install apollo-codegen:

First, we need to install apollo-codegen, a tool to generate code and annotations from GraphQL schema and query documents. Now we open Terminal and type this: npm install -g apollo-codegen

2. Install Apollo framework

Create your Xcode project. I’ve already created a project called GraphQLExample. To add Apollo to this project, I used Cocoapods. Add this line to pod file

`pod 'Apollo'`

Run…

## Andy Nguyen

I’m a full-time dreamer, and also a developer. My Git: https://github.com/dzungnguyen1993

Get the Medium app