Kt. Academy Logo

Owen Griffiths

Owen has been developing software since the mid 1990s and remembers the productivity of languages such as Clipper and Borland Delphi.

Since 2001, He moved to Web, Server based Java and the Open Source revolution. With many years of commercial Java experience, He picked up on Kotlin in early 2015. After taking detours into Clojure and Scala, like Goldilocks, He thinks Kotlin is just right and tastes the best. Owen enthusiastically helps Kotlin developers continue to succeed.

Reviewed articles

Generics in Kotlin

The essence of how generics work in Kotlin.

Static Code Analysers

All you need to know about Static Code Analysers and Detekt.

Nicola Corti
Nicola Corti

Annotation Processing

Implement your first annotation processor in Kotlin.

Marcin Moskała
Marcin Moskała

Effective Kotlin Item 60: Use appropriate collection types

Using non-standard collection types to improve performance in Kotlin.

Kotlin Symbol Processing

All the essential aspects of KSP in practice.

Marcin Moskała
Marcin Moskała

Effective Kotlin Item 49: Use caching when possible

Why we should use caching and how to do it.

Marcin Moskała
Marcin Moskała

Data classes in Kotlin

What are data classes in Kotlin and how do we use them.

Marcin Moskała
Marcin Moskała

Effective Kotlin Item 48: Consider using object declarations

Why we should use object declarations instead of regular classes.

Kotlin Reflection: Type references

Using type references, with practical example of random value generator.

Marcin Moskała
Marcin Moskała

Kotlin Reflection: Class references

All the essential aspects of class references, and a practical object serialization example.

Marcin Moskała
Marcin Moskała

Kotlin Reflection: Method and property references

The general hierarchy of Kotlin reference classes, and details about method and property references.

Marcin Moskała
Marcin Moskała

Extensions in Kotlin

What are extensions in Kotlin and how do we use them.

Effective Kotlin Item 35: Consider using dependency injection

What is dependency injection, why it is so important, and how to use it in Kotlin.

Implementing Multiplatform Kotlin Mobile

How in Kotlin we can implement Android and iOS projects with shared logic.

Implementing Multiplatform Kotlin library

How in Kotlin we can use multiplatform capabilities to distribute the same code to multiple platforms.

Using Multiplatform Kotlin

The essence of using multiplatform Kotlin capabilities and definition common elements.

Sealed classes and interfaces in Kotlin

What are sealed classes and interfaces in Kotlin and how do we use them.

Effective Kotlin Item 2: Eliminate critical sections

Learn why do we need to synchronize access to mutable state, and how to secure it.

Kotlin and Java interoperability: Traps and gotchas

The parts of Kotlin and Java interoperability that might be surprising or counterintuitive.

Kotlin and Java interoperability: Useful annotations

Learn about useful Kotlin annotations, that decide that it is compiled to on JVM.

Kotlin and Java interoperability: Properties and annotations

Kotlin property is Java getter, setter, field and possibly more. So what to do, when you need to annotate or use a specific JVM element?

Kotlin and Java interoperability: Types

See surprising transitions that happens on types when you interoperate between Kotlin and Java.

Objects in Kotlin

What is object expression, object declaration and companion objects, and how we use them.

Kotlin Contracts

Practical review of Kotlin Contracts - a feature we often use, without knowing about it.

The beauty of Kotlin type system

How type system makes Kotlin so flexible, safe, and intuitive.

Map as a property delegate

How do we use Map as a property delegate, and why the result of a famous puzzler should not be surprising.

Observable and Vetoable delegates

What are observable and vetoable delegates, and what are their real-life use cases.

Lazy property delegate

What is lazy delegate, and what are its real-life use cases.

Property delegation

What is property delegation, how does it work, and how can we implement our custom property delegate.

Nullability in Kotlin

How Kotlin null-safety works, and how can we deal with nullable values.

Interface Delegation

One of the least known Kotlin features, that can be sometimes found really useful.

Basic values in Kotlin

Learn about the basic Kotlin values, types and operations.

Variance modifiers limitations

What limitations generic variance modifiers introduce, and how can we ignore them.

Covariant Nothing Object

The pattern we are all using, but no-one talks about it.

Kotlin Generic Variance Modifiers

What are out and in, and how do we use them without even knowing.

Enum classes in Kotlin

What are enum classes in Kotlin and how do we use them.

Operator overloading in Kotlin

How are operators defined for types in Kotlin, and how can we define our own operators.

The power of Kotlin for-loop

Learn about the amazing capabilities of Kotlin for-loop.

Your first program in Kotlin

How to write your first program, how can we use it in real-life projects, and how to explore what Kotlin is compiled to.

Functions in Kotlin

Learn about what functions can offer us in Kotlin.

Marcin Moskała
Marcin Moskała

Context receivers

All you need to know about the new and powerful Kotlin feature: context receivers.

Scope functions

What is let, also, apply and with, and how to use them in our applications.

DSL type-safe builders

How to define type-safe DSL builders in Kotlin.

Lambda expressions

Let's learn how to use lambda expressions, what special support they have, and what traps they generate.

Function references

How do we reference functions in Kotlin, to replace lambda expressions. All functions, including constructors, getters, extensions and more.