Recent posts

Recursive Algorithms vs Dynamic Programming

Why do we convert Recursive algorithms to DP typically? Analyse and compare the convenience and efficiency of recursive vs DP solutions for an edge case problem w/ Swift.

DFS vs BFS for Bipartite Graph Problems with Swift

Analyse and compare the convenience and efficiency of DFS and BFS solutions for the Bipartite Graph detection problem (Swift).

Array Partitioning Schemes in Swift

Implement the Hoare + Lomuto Partitioning Schemes (QuickSort) with the Swift stdlib. Discuss wider application of the schemes to solve problems.

Writing a Heap from scratch in Swift

Use the Swift 4+ stdlib for writing a Min/Max Heap. Discuss challenge of implementing nonlinear data structures in Swift.

Mistakes as a self-taught developer

Admitting your mistakes is the first step to solving them. Explore the mistakes I made as a self-taught developer, and optimise your performance with strategies.

My Safari setup

Streamlining common development workflows boosts productivity. Check out the keyboard shortcuts and extensions I use for Safari as a developer.

Documentation-Driven Development

Explore why and how to implement Documentation-Driven Development within Feature Release Cycles and project-wide. Dive into example guidelines for DDD on macro and micro levels.

What makes great software development teams

An exploration into what makes great software teams, and the effects of various factors. Based on experience, the best software teams had passionate people, useful products, standardised processes, and positive culture.

Why you should bother with git-flow

A generic reflection on how git-flow automates several clean code principles and enforces standardisation in projects.

Prune nested Swift Package dependencies

Subtle tip for SPM projects: Only import the package libraries you need for each target to reduce final binary size and optimise build times.

Cleanly check if an Index is valid with Swift

Use generic extensions, modules and the Swift stdlib for efficient and reusable index checks. Also useful for library vendors looking to expose a minified API.

How to write a recursive Either enum with Swift

How to write a recursive Either enum with Swift written using generic associated values. Stretch the limits of a strict, statically typed and mostly imperative language!

Strategies for take-home coding tests

Coding ability improves through consistent and deliberate coding. The way to ace a coding test is to take care in details even when not being assessed.

Write `ls` with UNIX source code in C

`ls` is a well-known utility on UNIX-based OS'. Use `opendir` and `readdir` to re-implement `ls` and understand more about your filesystem.

How to get promoted faster to senior developer

Brainstorming strategies to uplevel in your career faster. The way to become a senior developer is to provide the value of a senior developer.

Why you shouldn't be using print()

Explore the new Logger class for useful, privacy-friendly, scalable logging in Swift apps. Understand why Apple promotes unified logging over print for production apps.