Product Development
Custom software & product engineering.
Cloud Engineering
Modern cloud native & migration specialists.
Cyber Security
Empowering organisations to combat cyber threats.
Artificial Intelligence
Harness the power of AI.
Training
Accelerated learning for developers.
Articles, tutorials, and the occasional opinion piece from the team
Koin provides a modern DI framework which supports Kotlin idioms and is usable across conventional, mobile and Cloud based applications.
KotlinPoet provides a simple API for generating Kotlin source files. It allows you to automate what would otherwise be tedious...
Why date and time is so difficult with older Android versions and the best approach to solve this
A look at how both statically and dynamically typed languages have pros and cons and how we should identify the...
Last week my dear colleague Ryan wrote a blog post in praise of dynamic types. I would ask you not...
‘Effective Kotlin' follows in the long line of renowned Effective programming books. But is it a worthy addition to the...
Modern programming languages can be categorised in many ways, but the most common approach is to slice them by how...
The SOLID principles of software design provide guidelines on how we can make our code more readable, maintainable and extensible....
In software, there is a constant tension between sufficiency - the need to say something in as few words as...
This year we were given the opportunity to attend the AppBuilders Conference at the stunning location of Lugano in Switzerland....
As another busy year of training draws to a close it's traditional that I stick my head above the parapet...
Science, Technology, Engineering and Maths (or a flavour thereof) are often touted as cornerstone subjects for a career in software...
Community is a vital part of a successful software ecosystem, but what are the secrets to creating a successful meetup?...
The Kotlin type system is fairly flexible but there are a few corner cases where the compiler enforces rules which...
How this will merge the power of custom types with the performance of primitives