Systems | Development | Analytics | API | Testing

How to Migrate Legacy Swift Code to Modern Concurrency Without A 'Big Bang' Rewrite

Concurrency means running multiple tasks at the same time, and it’s a great way to ensure our apps stay responsive. Swift 5.5 introduced structured concurrency and the closely related concept of async/await to improve the management of asynchronous code, part of a wave of changes designed to ensure simpler code, improved error handling and automatic task lifecycle management.

ADB Debugging: What It Is and How to Use It on Android

Modern app users don’t tolerate glitches — speed and stability are non-negotiable. Debugging across multiple Android devices, however, can be tedious if done manually. That’s why developers rely on Android Debug Bridge (ADB) to streamline development. With ADB, we can: In this guide, we’ll cover what ADB is, how it works, installation steps, and the most useful commands for debugging Android applications.

How to Submit an iOS App to the Apple App Store: Step-by-Step Guide for Developers

In less than 20 years, mobile apps have grown from a bright new idea to a cornerstone of our daily lives. And while Android accounts for the lion’s share of the market, iOS usage continues to grow exponentially: in 2024 alone, iOS apps and games were downloaded around 35 billion times. The Apple App Store is both a shop window and a marketplace for this global industry. But as iOS developers, how do we actually submit a mobile app to the store?

An introduction to Kotlin Sealed Class

Sealed classes are a special kind of class in Kotlin, used to create restricted hierachies — where the full list of sub-classes is strictly limited, and known in advance. This is particularly useful when we want to enhance the power of Kotlin’s when statement, model a type that has a fixed set of possible variations, or represent a fixed group of states or outcomes (such as network responses, UI states and form validations).