Serhii Yaremych's Avatar

Serhii Yaremych

@desugar.bsky.social

Android Developer passionate about GPU graphics and Jetpack Compose. Building Imla - an experimental GPU-accelerated blur solution for Android. Exploring OpenGL and rendering algorithms to create smooth visual experiences.

92 Followers  |  192 Following  |  209 Posts  |  Joined: 07.11.2024  |  2.3769

Latest posts by desugar.bsky.social on Bluesky

Generated Image of Chet Haase as a saint

Generated Image of Chet Haase as a saint

With us in spirit: St. Chet!
@droidcon.bsky.social #dcldn25
@chethaase.com

30.10.2025 09:22 β€” πŸ‘ 9    πŸ” 1    πŸ’¬ 1    πŸ“Œ 0

Nice progress, but "seamless" isn’t even on the horizon yet.

28.10.2025 13:37 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Everything’s relative, context matters. To me, game dev often runs harder than mobile or even C++ systems: realtime demands, engine guts, content pipelines, netcode endless edge cases. In the end its time invested tools click, fluency grows. No shade, respect to every craft. Experience shifts slope.

26.10.2025 21:12 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

The next thing they need to do is make the debugging experience better than just printing lines to the console. Currently, step debugging isn’t possible from Android.

25.10.2025 07:41 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

This is def not a normal situation - most libs have consistent alignment across all pages, which is prob why AS only checks the first one.
But edge cases exist, especially w/ external native deps. Better catch it now than scramble on Oct 31st when everyone panics lol. Stay safe!

24.10.2025 17:23 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image

Don't rely only on AS. Use readelf from NDK directly. Check ALL LOAD segments.
The "Align" column must be 0x4000 (16KB) or higher for every single one. Even one segment showing 0x1000(4KB)?
That's ur problem right there.

24.10.2025 17:23 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

We updated all our native libs to be compliant. Android Studio showed everything's good.
But Play Console kept warning us we're still not compliant. Spent forever debugging, turned out one of the libs had its last page aligned to 4KB instead of 16KB. Super not obvious.

24.10.2025 17:22 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

PSA for #AndroidDev: Google's #16KB page size requirement starts Nov 1st - literally next week. Just discovered a really nasty corner case that ate hours of my time today. If ur using native libs this might save u from last-minute Play Store rejections. Here's what I found 🧡

24.10.2025 17:21 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Working on more custom options - Compose Stability Analyzer

23.10.2025 11:23 β€” πŸ‘ 17    πŸ” 2    πŸ’¬ 0    πŸ“Œ 0
Gerrit Code Review

android-review.googlesource.com/c/platform/f...

19.10.2025 17:10 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Gerrit Code Review

3695306: Reimplement SlotTable as a link table | android-review.googlesource.com/c/platform/f...

It looks like it hasn’t been merged yet.

19.10.2025 17:10 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

It’s no longer a gap buffer, in the recent release, it was rewritten into a linked list–like structure.

18.10.2025 20:01 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

The next iteration will involve stripping "Android view" from the codebase. πŸ˜…

17.10.2025 13:03 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Not really β€œjust a Flutter”. Technically Compose is more advanced and does a better job automatically diffing state changes and updating widgets granularly. On Android it doesn’t carry its own renderer but embeds into the native Canvas, which has both advantages and disadvantages.

17.10.2025 12:55 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

So for me it’s just the JVM style. Lots of small explicit pieces instead of one umbrella module.
Android Studio smooths over and hides a lot of the import shenanigans, but outside AS, every time I hop into VS Code for a quick fix, I feel that pain.

17.10.2025 12:53 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Fair observation. For example, in Compose, modifiers are extension functions spread across packages, so the imports pile up. Android Studio auto-import hides it, but turn it off or write in VS Code and you feel every missing piece immediately. pretty quickly.

17.10.2025 12:47 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
GitHub - skydoves/compose-stability-inference: πŸ“š A comprehensive study of how the Compose compiler determines type stability for recomposition optimization. πŸ“š A comprehensive study of how the Compose compiler determines type stability for recomposition optimization. - skydoves/compose-stability-inference

I wrote a deep dive into Jetpack Compose class stability inference in the Jetpack Compose Internals book. People loved it, got great feedback.

Now, @github_skydoves decided to write a masterpiece to expand on this topic. Absolute cinema, give it a read and a star! ⭐️
github.com/skydoves/com...

17.10.2025 10:16 β€” πŸ‘ 11    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
Preview
Understanding retain{} internals: A Scope-based State Preservation in Jetpack Compose Jetpack Compose is a modern Android UI development with its declarative approach and powerful state management primitives. While remember{}…

Published a new article, 'Understanding retain{} internals: A Scope-based State Preservation in Jetpack Compose'.

Now you can try to use an experimental retain{} API. In this article, you’ll dive deep into the internal mechanisms of retain{}.

medium.com/proandroidde...

15.10.2025 07:10 β€” πŸ‘ 4    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
Video thumbnail

✨ New UI recipe
Glitch effect used in a disappearing animation #JetpackCompose

Code available here:
www.sinasamaki.com/glitch-visib...

14.10.2025 06:40 β€” πŸ‘ 13    πŸ” 3    πŸ’¬ 0    πŸ“Œ 0
Video thumbnail

✨ New article on how to create futuristic, cyberpunk glitch effects that's overused in sci-fi movies, right in #JetpackCompose

www.sinasamaki.com/glitch-effec...

This approach uses regular canvas functions, so no need to dip into shader code... yet.

#ComposeMultiplatform #AndroidDev

11.10.2025 08:06 β€” πŸ‘ 21    πŸ” 6    πŸ’¬ 2    πŸ“Œ 0

LazyList background composition. Starts first composition on a background thread via prefetch then finishes on main when the item shows. I like it. RN async lists often show gaps when you fling fast. Compose keeps layout and draw on main so it feels steadier. Curious and nice ok

01.10.2025 07:59 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
AGSL: Made in the Shade(r) RenderEffects #2: Pixel shaders in Android 13

Don't be afraid to experiment. The Android rendering pipeline is far more flexible now: RenderEffect for sane defaults, RenderNode/graphics layers for backdrop control, Haze for convenience, AGSL for custom algorithms. The only real limit is imagination.

medium.com/androiddevel...

14.09.2025 22:38 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
GitHub - Kyant0/AndroidLiquidGlass: Jetpack Compose Liquid Glass library Jetpack Compose Liquid Glass library. Contribute to Kyant0/AndroidLiquidGlass development by creating an account on GitHub.

We're no longer limited to Gaussian blur. You can implement custom blurring algorithms, and developers have replicated LiquidGlass with AGSL. Since shaders are embeddable, the palette of effects is wide open.

github.com/Kyant0/Andro...

14.09.2025 22:36 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
Android Developers Backstage: Episode 184: Skia and AGSL - Shaders of Things to Come In this episode we chat with Derek and Brian from the Skia team about Skia, pixel shaders, and the new β€œAGSL” API that lets you provide pixel shaders for advanced graphics effects, which was recently ...

Android 13 answered with RuntimeShader and AGSL. You can embed small shaders directly into the rendering pipeline and drive them via RenderEffect, expressing custom filters as code rather than workarounds.
adbackstage.libsyn.com/episode-184-...

14.09.2025 22:36 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Once backdrop blur is in place, design asks grow: shaped or masked regions, adaptive intensity, chroma-preserving blur, and non-Gaussian looks that react to scroll. That's when you begin to outgrow the built-ins.

14.09.2025 22:34 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Video thumbnail

In Compose, the analogue is the GraphicsLayer API: it separates composition into layers so the background can be blurred as a unit while the overlay renders cleanly above. Prefer Haze by @chrisbanes.me β€” it handles this and edge cases.

14.09.2025 22:33 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

In Views, use RenderNode for layered rendering: record background into a RenderNode, attach a blur RenderEffect to that node, then draw your translucent overlay afterward without the effect.

14.09.2025 22:32 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Backdrop blur with RenderEffect: separate layers. Blur the background layer, keep the overlay crisp, then compose them in order.

14.09.2025 22:32 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Applying RenderEffect.createBlurEffect(...) to a view gives content blur.
Useful, but it won't blur what sits behind your overlay.

14.09.2025 22:31 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Key distinction:
β€’ Content blur: blur the pixels a view draws.
β€’ Backdrop blur: blur the already-drawn scene behind an overlay (the classic "frosted glass").

14.09.2025 22:31 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

@desugar is following 20 prominent accounts