41554 blogs · [ { "id": "01a087da-78cd-7123-9adc-f353a7d770ed", "title": "Writing interactive screenshot tests in Compose UI with Touch Robot", "url": "https://saket.me/touch-robot/", "published_at": "2026-05-24T06:09:55+00:00" }, { "id": "01a087da-78cd-7123-9adc-f353a81ede2f", "title": "Generating rich link previews 10x faster", "url": "https://saket.me/generating-rich-link-previews-10x-faster/", "published_at": "2025-12-23T06:10:00+00:00" }, { "id": "01a087da-78cd-7123-9adc-f353a823c165", "title": "The pursuit of fast feedback loops", "url": "https://saket.me/fast-feedback-loops/", "published_at": "2024-11-27T17:46:56+00:00" }, { "id": "01a087da-78cd-7123-9adc-f353a89746ca", "title": "Building a sub-sampling image viewer for Compose UI", "url": "https://saket.me/compose-sub-sampling-image-viewer/", "published_at": "2023-08-09T21:07:52+00:00" }, { "id": "01a087da-78cd-7123-9adc-f353a96d1850", "title": "Drawing custom text spans in Compose UI", "url": "https://saket.me/compose-custom-text-spans/", "published_at": "2022-07-12T15:49:24+00:00" }, { "id": "01a087da-78cd-7123-9adc-f353aa643839", "title": "Graduating from View IDs", "url": "https://saket.me/graduating-from-view-ids/", "published_at": "2021-12-02T08:55:21+00:00" }, { "id": "01a087da-78cd-7123-9adc-f353ab1abd47", "title": "Great teams merge fast", "url": "https://saket.me/great-teams-merge-fast/", "published_at": "2021-02-23T23:15:21+00:00" }, { "id": "01a087da-78cd-7123-9adc-f353abbef81c", "title": "Avoiding fake italic and bold text on Android", "url": "https://saket.me/android-fake-vs-true-bold-and-italic/", "published_at": "2019-12-18T00:08:59+00:00" }, { "id": "01a087da-78cd-7123-9adc-f353ac041dfe", "title": "Reinventing the dial-up modem", "url": "https://saket.me/dtmf-tones/", "published_at": "2019-08-18T00:55:04+00:00" }, { "id": "01a087da-78cd-7123-9adc-f353acb85ff1", "title": "Building a gesture driven Reddit app", "url": "https://saket.me/building-a-gesture-driven-reddit-app/", "published_at": "2019-06-16T17:45:13+00:00" }, { "id": "01a087da-78cd-7123-9adc-f353ad634cf4", "title": "Sunsetting Dank", "url": "https://saket.me/sunsetting-dank/", "published_at": "2018-12-15T18:41:13+00:00" }, { "id": "01a087da-78cd-7123-9adc-f353addec7c4", "title": "Smoothly reacting to keyboard visibility changes in Android", "url": "https://saket.me/smoothly-reacting-to-keyboard/", "published_at": "2018-10-05T19:05:52+00:00" }, { "id": "01a087da-78cd-7123-9adc-f353ae01a9ce", "title": "Introducing InboxRecyclerView, a library for building expandable descendant navigation", "url": "https://saket.me/inboxrecyclerview/", "published_at": "2018-09-14T06:19:26+00:00" }, { "id": "01a087da-78cd-7123-9adc-f353ae9ca820", "title": "Designing a flick dismissible image viewer", "url": "https://saket.me/flick-dismissible-images/", "published_at": "2018-08-15T11:37:46+00:00" }, { "id": "01a087da-78cd-7123-9adc-f353aeb00ad1", "title": "Persistence as the single source of truth", "url": "https://saket.me/persistence-as-the-single-source-of-truth/", "published_at": "2018-07-26T14:51:38+00:00" }, { "id": "01a087da-78cd-7123-9adc-f353aee5b0bc", "title": "This is your next Reddit app — Dank", "url": "https://saket.me/dank/", "published_at": "2018-05-11T20:07:14+00:00" }, { "id": "01a087da-78cd-7123-9adc-f353af3c5d00", "title": "Band-aiding legacy networking libraries with Retrofit and OkHttp", "url": "https://saket.me/retrofit-band-aid/", "published_at": "2018-04-30T09:22:05+00:00" }, { "id": "01a087da-78cd-7123-9adc-f353b035d80d", "title": "Simplifying DiffUtil with RxJava", "url": "https://saket.me/simplifying-diffutil-rxjava/", "published_at": "2018-02-18T07:45:54+00:00" }, { "id": "01a087da-78cd-7123-9adc-f353b038df67", "title": "The lesser known world of spans", "url": "https://saket.me/lesser-known-world-of-spans/", "published_at": "2017-11-05T14:52:27+00:00" }, { "id": "01a087da-78cd-7123-9adc-f353b03cc057", "title": "Android Nougat and rate limiting of notification updates", "url": "https://saket.me/android-7-nougat-rate-limiting-notifications/", "published_at": "2017-08-28T11:23:55+00:00" }, { "id": "01a087da-78cd-7123-9adc-f353b0e382c0", "title": "Displaying HTML tags on TextView the right way", "url": "https://saket.me/html-tags-textview/", "published_at": "2017-06-29T12:59:12+00:00" }, { "id": "01a087da-78cd-7123-9adc-f353b171cab4", "title": "Tips for Android Nougat’s bundled notifications", "url": "https://saket.me/nougat-bundled-notifications/", "published_at": "2017-05-31T14:00:50+00:00" }, { "id": "01a087da-78cd-7123-9adc-f353b260202d", "title": "A better way to handle links in TextView", "url": "https://saket.me/better-url-handler-textview-android/", "published_at": "2016-09-11T17:48:21+00:00" }, { "id": "01a087da-78cd-7123-9adc-f353b2f6d831", "title": "Deflating the LayoutInflater", "url": "https://saket.me/deflating-layoutinflater/", "published_at": "2016-08-28T14:46:38+00:00" } ] posts Claim your blog
Back to saket.me
Blog · corpus.blog/blogs/saket.me/posts

saket.me

saket.me

2026

2025

2024

2023

2022

2021

2019

2018

2017

2016