RSSAmplifier

Blog

Adetunji Dahunsi

A collection of my thoughts and experiences.

tunjid.comRSS feed ↗109 posts

Latest posts

Snapshottable: A Compose Kotlin Compiler Plugin

Generate compose snapshot state from class specifications

Embracing Compose Snapshot State for UI Layer State Production

Use Compose State and not StateFlow to get the best out of Kotlin, coroutines and compose in the UI layer

Shared element transitions for large screened devices

Scaling up shared element transitions to the big screen

Heron: a graceful ATprotocol client

An opensource client for browing the ATmosphere

The Android Show Fall 2025

I co-hosted the fall edition of the 2025 Android show

3 unique predictive back animations you can create with the navigation events library

Swipe to pop, drag to pop, and sticky shared element animations

UI Layer Architecture for Adaptive Apps with Compose Multiplatform

A talk covering the nuances for building for multiplle screen sizes with Jetpack Compose

UI layer architecture for persistent UI elements

Should persistent UI elements be defined at the root level or per-screen?

3 neat animations you can create with Modifier.animateBounds

See how composition permanence can help you create better animations with Jetpack Compose

2024 App Development Year In Review: Android Jetpack Goes Multiplatform with Kotlin

Getting closer to write once, run anywhere for multiplatform apps

Composables: A KMP component library

A utility libray for building beautiful, engaging multiplatform apps with Jetpack Compose

Declarative APIs For Declarative UIs: Shared Elements with Video, Photos, and and rich media with Jetpack Compose Components

A talk about shared element transitions with rich media in Jetpack Compose

Declarative APIs for Declarative UIs: Pagination as state

List backed APIs for paging in Jetpack Compose

Animating ContentScale during image shared element transitions

A Jetpack Compose twist on an old favorite

Drag and Drop In Compose at the Android Show

A live demo for the new Drag and Drop APIs In Compose

Drag and drop in Jetpack Compose

Transfer content between apps conveniently with Jetpack Compose

Video streaming algorithms with Kotlin: H.264 NAL unit parsing

How Kotlin made writing a video streaming algorithm a little easier

UDF with Functional Reactive Programming: A case study

A practical example of unidirectional data flow with Kotlin coroutines and Flows on Android

Interactive tutorial: State production with unidirectional data flow and Kotlin Flows

an interactive overview of the state production pipeline with flows

Navigation as state: Implementing animated navigation transitions for large screens with moveableContentOf in Jetpack Compose

Navigation state as a driver for large screen transitions

Playing with derivedstateof and sticky headers with LazyVerticalGrid

How to create sticky headers in a LazyVerticalGrid or LazyStaggeredVertical Grid using derivedStateOf

Android Sample Links on developer.android.com

Find the best samples for an Android topic

Offline-first apps at ADS 2022

Offline-first apps in 5 minutes

Jetpack Compose MAD skills Q/A

We answer your questions on Jetpack Compose live!

Offline-first apps at DroidCon NYC 2022

An overview of building offline-first apps

Offline-first apps at ChicagoRoboto 2022

Learn how to build an offline-first app!

Unidirectional data flow with Kotlin Flows Playground

An interactive experiment for learning how to produce state with kotlin flows

Android Architecture Q/A

A Q/A session about Android Architecture!

Now In Android

An app that teaches all the things!

The UI layer on Android - MAD skills

Learn about the UI layer on Android

Unidirectional Data Flow as a Functional declaration

Representing UI state production pipelines as a function of a stream of inputs yielding a stream of output states

Me

A Jetpack Compose kotlin multiplatform blog editor

Tiler

A kotlin multiplatform, reactive map-like abstract data type for fetching keyed data

Mutator

A tiny, multiplatform, redux-like library that makes it easy to transform streams of actions into streams of state

Paging 3: Live Q&A - MAD Skills

Paging 3, you've got questions, we've got answers

Paging: Getting fancy with transformations, separators, headers, footers and search

Transforming your data with Paging 3

Paging: Displaying data and its loading state

Understanding Paging 3 Loading states

Paging: Fetching data from the network

Learn how to pull data from the network with Paging 3

Paging 3 MAD skills intro

An introduction to the Paging 3 library

Paging 3 MAD skills teaser

A teaser for the paging 3 MAD Skills series

Tunji Web Deux

Personal website 2 electric boogaloo

Tweetus Deletus

This you?

Tweetus Deletus, tweets and json sequences

This you?

Android Views as a Function of State with ViewBinding Case Study; RecyclerViews, A/B testing and…

The RecyclerView is a lot like Lego, endlessly configurable

Kotlin Delegation by Inception

Delegating to delegates with a functional twist

Android Views as a Function of State with ViewBinding Case Study; The Live Game Stream

Bugdroid ❤s single line tags

Building the right Android View Abstraction

What even are declarative UIs?

Live Streaming on Android @ Droidcon EMEA 2020

Me on live video streaming on Android with Camera2 APIs, Kotlin Coroutines and RTMP

ChicagoRoboto 2020

Learn about how to make deliberate, useful and amazing animations with kotlin!

Declarative lists on Android With RecyclerView + ViewBinding

One liner xml to stateful RecyclerView.ViewHolder instance