Blog

Current posts

A focused archive of writing on mobile engineering, architecture, concurrency, design tradeoffs, and the occasional systems tangent.

21/02/2025

SOLID Principles of OOP

SOLID Principles applied in Swift programming Let’s explore how to apply the SOLID principles of Object Oriented Programming (OOP) when designing a Swift SDK for an iOS app, specifically one for Oracle to manage customer...

3 tags

21/02/2025

End to end encryption

End to end encryption Can you elaborate more on the end to end encryption of messages? For example: when device A sends "Good morning device B" to device B, how's that message encrypted, where does the encryption keys st...

2 tags

17/02/2025

AIOS concept: OS by AI agents

Artificial Intelligence Operating System Introduction to AIOS An AIOS (Artificial Intelligence Operating System) is a conceptual operating system designed to facilitate the development, deployment, and management of appl...

2 tags

12/03/2020

Dynamic vs Static

When someone says something is dynamic, it usually means things could change. Dynamic array, meaning the content of the array could change, or a dynamic system could mean a system that is robust and can adapt to differen...

5 tags

26/03/2019

Swift Race Condition: ATM Withdraw Problem

Race condition happens when 2 or more threads access the shared data at the same time and change its value at the same time resulting in unexpected state. A simple example is the typical ATM withdraw problem. ATM withdra...

3 tags

26/03/2019

Deadlock example

Deadlock is a situation when two or more threads are waiting on each other to be completed causing both to be locked and not able to continue. A practical example of a deadlock is ! Let's see an example in swift. here, t...

3 tags

19/03/2019

Latest swift tips

It's been a while I've updated my posts. Here are some new tips that makes coding with swift cool. @autoclosure @autoclosure attribute defines an argument that automatically gets wrapped in a closure. It's used to defer...

3 tags

04/12/2016

Debug View for iOS App

It's a common requirement to tweak different configurations of the app for debug purposes. The general way of doing it is using Settings.bundle where the Settings are located inside Setting of the iPhone. It has a few dr...

5 tags

25/01/2016

Complex number

Since a complex number is comprised of a real and imaginary component, two complex numbers are equal if and only if their respective real and imaginary components are equal.

2 tags

24/01/2016

TLDR iOS App

](https://travis ci.org/freesuraj/TLDR) ](http://twitter.com/iosCook) ][href2] TL;DR (iOS Version) [TL;DR][href1] is a open source project which maintains a list of man pages. This project is the iOS Client of that.

3 tags

24/01/2016

Strange Swift Protocol

Swift protocol is very interesting yet very weird. Sometimes it behaves very strangely. {% highlight swift %} import Foundation protocol Command {} struct TLDRCommand: Command {} // Works func getOk() [Command] { return...

2 tags

01/01/2015

Greetings and Goodbye 2014 !

Hello and a happy new year to everybody. 2014 was a year of trial and errors for myself. We were finally able to incorporate LaoHan Pte Ltd officially in Singapore. we have been thinking about doing a lot of stuffs and n...

4 tags

20/08/2010

Running Java from Shell

Inside shell, you can’t directly run a command like this java jar abc.jar to run the .jar file. shell doesn’t recognize the java command. you need to export the environmental variable PATH of JAVA, normally it’s done by...

3 tags