TJ

Really good buddies with the little green droid, wearer of many hats. I like to build, design and tinker. ๐ŸŒ tunji.dev Building @heron.tunji.dev, an open source atproto client for Android, iOS and Desktop. Why Heron? heron.tunji.dev

932 followers224 following109 stories

Longform Stories

Snapshottable: A Compose Kotlin Compiler Plugin

Generate compose snapshot state from class specifications

May 17ยท1 min readยท13 words

Embracing Compose Snapshot State for UI Layer State Production

Getting the best out of Kotlin, coroutines and compose in the UI layer

May 15ยท1 min readยท22 words

Shared element transitions for large screened devices

Scaling up shared element transitions to the big screen

Dec 8ยท1 min readยท16 words

Heron: a graceful ATprotocol client

An opensource client for browing the ATmosphere

Nov 3ยท1 min readยท12 words

The Android Show Fall 2025

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

Nov 3ยท1 min readยท15 words

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

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

Aug 27ยท1 min readยท24 words

UI Layer Architecture for Adaptive Apps with Compose Multiplatform

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

Jul 28ยท1 min readยท23 words

UI layer architecture for persistent UI elements

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

May 14ยท1 min readยท19 words

3 neat animations you can create with Modifier.animateBounds

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

Mar 26ยท1 min readยท21 words

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

Getting closer to write once, run anywhere for multiplatform apps

Dec 25ยท1 min readยท22 words

Composables: A KMP component library

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

Nov 23ยท1 min readยท17 words

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

Oct 18ยท1 min readยท30 words

Declarative APIs for Declarative UIs: Pagination as state

List backed APIs for paging in Jetpack Compose

Apr 26ยท1 min readยท16 words

Animating ContentScale during image shared element transitions

A Jetpack Compose twist on an old favorite

Mar 21ยท1 min readยท15 words

Drag and Drop In Compose at the Android Show

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

Oct 26ยท1 min readยท21 words

Drag and drop in Jetpack Compose

Transfer content between apps conveniently with Jetpack Compose

Oct 4ยท1 min readยท14 words

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

How Kotlin made writing a video streaming algorithm a little easier

Jul 19ยท1 min readยท20 words

UDF with Functional Reactive Programming: A case study

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

Jul 10ยท1 min readยท22 words

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

an interactive overview of the state production pipeline with flows

Feb 7ยท1 min readยท21 words

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

Navigation state as a driver for large screen transitions

Dec 30ยท1 min readยท24 words

Playing with derivedstateof and sticky headers with LazyVerticalGrid

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

Dec 1ยท1 min readยท21 words

Android Sample Links on developer.android.com

Find the best samples for an Android topic

Nov 18ยท1 min readยท13 words

Offline-first apps at ADS 2022

Offline-first apps in 5 minutes

Nov 8ยท1 min readยท10 words

Jetpack Compose MAD skills Q/A

We answer your questions on Jetpack Compose live!

Oct 13ยท1 min readยท13 words

Offline-first apps at DroidCon NYC 2022

An overview of building offline-first apps

Sep 1ยท1 min readยท12 words

Offline-first apps at ChicagoRoboto 2022

Learn how to build an offline-first app!

Aug 1ยท1 min readยท12 words

Unidirectional data flow with Kotlin Flows Playground

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

Jul 10ยท1 min readยท19 words

Android Architecture Q/A

A Q/A session about Android Architecture!

Apr 28ยท1 min readยท9 words

Now In Android

An app that teaches all the things!

Apr 10ยท1 min readยท10 words

The UI layer on Android - MAD skills

Learn about the UI layer on Android

Mar 22ยท1 min readยท15 words

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

Mar 15ยท1 min readยท26 words

Me

A Jetpack Compose kotlin multiplatform blog editor

Feb 27ยท1 min readยท8 words

Tiler

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

Feb 27ยท1 min readยท13 words

Mutator

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

Feb 24ยท1 min readยท19 words

Paging 3: Live Q&A - MAD Skills

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

Nov 11ยท1 min readยท15 words

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

Transforming your data with Paging 3

Nov 1ยท1 min readยท16 words

Paging: Displaying data and its loading state

Understanding Paging 3 Loading states

Oct 18ยท1 min readยท12 words

Paging: Fetching data from the network

Learn how to pull data from the network with Paging 3

Oct 11ยท1 min readยท17 words

Paging 3 MAD skills intro

An introduction to the Paging 3 library

Sep 27ยท1 min readยท12 words

Paging 3 MAD skills teaser

A teaser for the paging 3 MAD Skills series

Sep 27ยท1 min readยท14 words

Tunji Web Deux

Personal website 2 electric boogaloo

May 21ยท1 min readยท8 words

Tweetus Deletus

This you?

Apr 5ยท1 min readยท4 words

Tweetus Deletus, tweets and json sequences

This you?

Mar 7ยท1 min readยท8 words

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

Feb 14ยท1 min readยท24 words

Kotlin Delegation by Inception

Delegating to delegates with a functional twist

Dec 12ยท1 min readยท11 words

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

Bugdroid โคs single line tags

Nov 14ยท1 min readยท20 words

Building the right Android View Abstraction

What even are declarative UIs?

Oct 18ยท1 min readยท11 words

Live Streaming on Android @ Droidcon EMEA 2020

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

Oct 8ยท1 min readยท22 words

ChicagoRoboto 2020

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

Aug 28ยท1 min readยท14 words

Declarative lists on Android With RecyclerView + ViewBinding

One liner xml to stateful RecyclerView.ViewHolder instance

Mar 1ยท1 min readยท15 words

Easy text styling and concatenation in Android

What if styling spans in Android was fluent and joining them as simple String concatenation?

Jan 11ยท1 min readยท22 words

Creating an Expandable Floating Action Button in Androidโ€Šโ€”โ€ŠPart 2

An expanded floating action button used to call out sharing

Dec 3ยท1 min readยท21 words

Composition over Inheritance; Adding a Material Speed Dial to a Floating Action Button

Material Floating Action Buttons

Nov 16ยท1 min readยท17 words

Build your own Android based home automation system with Kotlin

A talk about home automation with Kotlin At Kotlin Everywhere Boston 2019

Nov 9ยท1 min readยท22 words

Common Android Navigation Paradigms via the FragmentManager API

I love Android fragments, come see why!

Oct 21ยท1 min readยท15 words

Simplifying the FragmentManager API; Multiple Fragment backstacks on Android

A simple list โ€” detail navigation flow

Oct 8ยท1 min readยท16 words

Driving Motional Intelligence for Global Persistent UI on Android with a Simple State Store

Navigation destinations in the Reply Material Studies app. Notice UI elements common to various screens

Aug 5ยท1 min readยท29 words

Home Automation With Android Things & Kotlin

My Android Things Home Automation Hub, the green dongle is the TI CC2531

Jul 8ยท1 min readยท20 words

90 days of Kotlin

Change; as constant as the seasons. Photo by Chris Lawton on Unsplash

Jul 8ยท1 min readยท16 words

Socket.io as a chat and general event platform

Using web sockets to broker asynchronous streams

Jun 27ยท1 min readยท15 words

The Model as the Form; Single Source of Truth bindings for Editable Text Fields in Android

Everything can be a list

May 23ยท1 min readยท21 words

Teammate Android; From #Startup to Open Source Software

I like to moonlight as a UI / UX designer

May 22ยท1 min readยท18 words

Open sourcing DigiLux

DigiLux Icon

May 13ยท1 min readยท5 words

The Current State of Idiomatic Android Development

A walkthrough of the changes and evolutions in Android development

May 2ยท1 min readยท17 words

Simple, Functional Async RecyclerView Diffing

A List undergoing change from State A to B

Feb 26ยท1 min readยท14 words

Composing attributes of a Dynamic RecyclerView with Functions

I really, really, REALLY love the RecyclerView

Feb 26ยท1 min readยท15 words

Concatenating arbitrary Text Spans in Android

Styling text spans with kotlin extensions

Dec 12ยท1 min readยท12 words

Moving on to Medium

Managing a custom CMS is hard

Nov 26ยท1 min readยท10 words

Flattening Androidโ€™s TextInputLayout

Creating a TextInputLayout with a ConstraintLayout

Nov 25ยท1 min readยท9 words

Reverse Engineering Android Pieโ€™s Logarithmic Brightness Curve

Logarithmic curve fitting goodness

Nov 21ยท1 min readยท11 words

Threading out of a performance labyrinth with Systrace

Finding that bottleneck that causes things to jitter

Nov 14ยท1 min readยท16 words

I Want it All, Owning The System Window and Consuming Insets

Why Draw Behind The Status Bar?

Oct 29ยท1 min readยท17 words

Sliding along; composing a dynamic reusable ViewPager Indicator Animator

Puppy shaped karaoke style indicators!

Oct 23ยท1 min readยท14 words

Creating an Expandable Floating Action Button in Android

An implementation of an expanding FloatingActionButton in the Teammate Android App

Oct 16ยท1 min readยท19 words

Iโ€™m not chuffed about Kotlin coroutines.

Functional programming is more flexible than imperative programming

Apr 3ยท1 min readยท14 words

Teammate App

An app to help you find nearby games

Nov 29ยท1 min readยท10 words

Digilux

Digilux Fingerprint Sensor app

Oct 29ยท1 min readยท5 words

Android Extensions

A collection of modules to help bootstrap an Android App

May 28ยท1 min readยท12 words

Android Home Hub

Home automation app with support for 433 mHz, ZigBee and BLE connections

May 12ยท1 min readยท15 words

A Bluetooth Smart way to Toggle RF Switches

Article

Mar 14ยท1 min readยท9 words

Spannable Strings in Android

Article

Jul 8ยท1 min readยท5 words

Gradle Plugins (and my first contribution to open source!)

Gradle is pretty cool

Mar 31ยท1 min readยท13 words

Tunji Web

First attempt at a personal website

Feb 15ยท1 min readยท8 words

Fun Fact About iframes

Article

Feb 2ยท1 min readยท5 words

Converting a WordPress XML export file to JSON for MongoDB

Article

Feb 1ยท1 min readยท11 words

Moving From WordPress

Article

Jan 30ยท1 min readยท4 words

Advanced RecyclerView Demo

Article

Apr 26ยท1 min readยท4 words

Implementing a "Swipe" and "Finger Up" listener for Android's SwipeRefreshLayout

Article

Apr 9ยท1 min readยท11 words

Controlling a USBTMC device with a Python Script

Article

Feb 23ยท1 min readยท9 words

Tinyduino BLE and Accelerometer demo

Article

Feb 11ยท1 min readยท6 words

AD5933 Arduino Serial Monitor Interface

Article

Jan 28ยท1 min readยท6 words

Extracting Bio-impedance Parameters from Measured Data

Article

Jan 16ยท1 min readยท7 words

Creating custom timer interrupts for arduino

Article

Oct 23ยท1 min readยท7 words

Hypothesis confirmed: Software serial libraries are bad for complex sketches

Article

Oct 13ยท1 min readยท11 words

Downsides of software serial libraries

Article

Oct 12ยท1 min readยท6 words

Updating Gatt Structure on Android App after Change on Slave / Peripheral

Article

Oct 4ยท1 min readยท13 words

BLE Project Source Code

Article

Oct 2ยท1 min readยท5 words

Progressive Cavity Pumps

Article

Sep 28ยท1 min readยท4 words

Bioimpedance and The Future

Article

Sep 23ยท1 min readยท5 words

A little pressure, a little dye, a little caulk, and lots of time.

Article

Sep 9ยท1 min readยท14 words

Longterm Android BLE Connections

Article

Sep 8ยท1 min readยท5 words

A GATT Client

Article

Sep 7ยท1 min readยท4 words

Learning Photoshop

Article

Sep 7ยท1 min readยท3 words

A Simple GATT Server, Part 2

Article

Sep 5ยท1 min readยท7 words

A simple GATT Server, part 1

Article

Sep 5ยท1 min readยท7 words

Bluetooth Low Energy, an Introduction

Article

Sep 3ยท1 min readยท6 words

Blogging Starts Now

Article

Sep 3ยท1 min readยท4 words

Biohm

Measure bioimpediance of tissue with the AD5933

Jul 16ยท1 min readยท8 words

Open Source Accelerometer

Article

Jul 12ยท1 min readยท4 words