Chris Banes
banner
chrisbanes.me
Chris Banes
@chrisbanes.me
🕸️ https://chrisbanes.me
👨‍💻 Senior Staff Software Engineer
As a little experiment I asked Gemini 2.5 (Pro) to compare itself to ChatGPT-5.

It ended up telling me about Gemini 1.5 and that “Google has not announced a Gemini 2.5 model.”

I think I’ll be sticking with ChatGPT…

g.co/gemini/share...
‎Gemini - Gemini Advanced vs. ChatGPT-5 Comparison
Created with Gemini
g.co
September 28, 2025 at 10:24 PM
My team is looking for a new Android + KMP engineer!

🇺🇸/🇨🇦 Looking for someone in Boston, New York, Toronto, Washington DC
📺 Working on Ventura TV OS (www.thetradedesk.com/ventura-stre...)

If you have any questions, feel free to ask!

🔗: careers.thetradedesk.com/jobs/4870331...
Staff Android Software Engineer - VenturaOS
careers.thetradedesk.com
September 17, 2025 at 11:43 AM
Looking forward to being back at @droidcon.bsky.social London this year.

I spent quite a while on this talk title…
August 22, 2025 at 10:43 AM
I migrated our entire codebase over to it last week, and we’re now fully on the Metro train. 💺

It has pretty much everything y’all will need, right now.
Metro wouldn’t be where it is without the road that Anvil paved before it. I’ve really enjoyed working with Joel and Jacob on several Metro features already, with @ralf-wondratschek.com in its early design phase, and really looking forward continuing to work with all of them.

Future’s bright 🚇
Anvil is approaching the icebox, long live Metro.

github.com/square/anvil...
July 19, 2025 at 7:09 AM
I don’t know how they expect anyone to know the location of this bar…
July 2, 2025 at 3:51 PM
What is it with Facebook adding pull-up gestures for the most random actions:

Instagram DMs: Pull up to toggle disappearing messages.

WhatsApp: Pull up to call.

The amount of times I’ve triggered these actions: too many.
The amount of times that I’ve meant to perform them: absolutely zero.
June 24, 2025 at 9:11 PM
I've been trying out @jetbrains.com Junie over the past few few days, and have pretty blown away with it.

I've managed to do everything from a complex refactoring of Haze (with follow up tasks), to fairly complex string manipulation (pretty printing data class toString).
June 15, 2025 at 8:24 AM
Seems to be a lot of talk about Haze and Liquid Glass…

At its core, Haze is a background content transform library, and the ‘visual effect’ (blurring, etc) is just an implementation detail.

Liquid Glass will be a runtime shader like others which Haze already uses.
June 11, 2025 at 7:11 AM
💠 Haze 1.6.0 has been released!

This is a big release:
🤖 Blurring for all versions of Android
🎨 Foreground (content) blurring
📐 Blurred edge treatment

🔗: github.com/chrisbanes/h...
May 12, 2025 at 6:31 PM
💠 Haze 1.6.0-beta01 has been released!

🐛: Android 12 is now enabled by default
🤖: Experimental blurring support for all Android versions

The video below is recorded on a Pixel 3 running Android 11, but it works back to Android 5. Please give it a try and report back!

🔗: github.com/chrisbanes/h...
April 23, 2025 at 7:25 AM
Dug out an old Pixel 3 today, to do some testing on earlier Android versions.

I forgot how small and light devices used to be. Feels like a feather compared to my iPhone Pro Max 16
April 18, 2025 at 8:57 AM
Had a little hack getting Haze working on older Android devices.

It uses RenderScript, so is never going to be real-time, but the lag isn't too bad. Everything is performed asynchronously, so this isn't jank.

I'm undecided whether to keep going with it. Let me know if this would be useful to you.
April 10, 2025 at 7:53 AM
Focus bugs in Compose are the absolute worst.

The system is so opaque and hidden, that trying to deal with them is borderline impossible.
April 9, 2025 at 12:08 PM
Haze 1.5.0 has been released:

💨 Optimised blur shader implementation (thanks to Kyant)
🖌️ New: HazeProgressive.Brush for custom progressive effects
🐛 Usual load of bugfixes

github.com/chrisbanes/h...
Release 1.5.0 · chrisbanes/haze
Highlights Optimised blurring shader for progressive effects. Thanks to @Kyant0 in #537 HazeProgressive.Brush. You can now supply completely custom masks (via a shader) for progressive effects. Ad...
github.com
March 6, 2025 at 1:29 PM
🪢 Multiplatform Strings

This blog post talks through a solution which we've landed on, using a single file as the source of truth for all strings, across all of our apps.

chrisbanes.me/posts/multip...
Multiplatform Strings
Simplify multilingual app development with Twine! Learn how to manage and export strings for iOS, Android, and Compose Multiplatform efficiently
chrisbanes.me
February 20, 2025 at 11:52 AM
🚀 Should you use Kotlin Sequences for Performance?

I have always thought that using asSequence() was the way to optimize chained operations in Kotlin.

But after benchmarking, the results shocked me: Sequences are often slower! 😱

#Kotlin #AndroidDev

chrisbanes.me/posts/use-se...
Should you use Kotlin Sequences for Performance?
Should you use Kotlin Sequences for performance? I put List, Sequence, and Flow to the test with kotlinx-benchmark, and the results were surprising!
chrisbanes.me
February 13, 2025 at 11:53 AM
Spent 10 mins integrating Bluesky comments into my Hugo blog

Shamelessly reusing @kau.sh’s code from bsky.app/profile/kau....
February 11, 2025 at 10:01 PM
Just tried asking ChatGPT and Gemini to convert a `composed` modifier to use `Modifier.Node`, and both failed miserably.

Gemini probably got closest of the two, but it hallucinated all sorts of random callbacks which don't exist.
February 11, 2025 at 12:48 PM
Haze 1.3.0 has been released!

🔵 Radial Progressive (gradient) effects
🖌️ Brush support in tints
🧑‍💻 New samples
📑 New docs courtesy of @markallison.social

github.com/chrisbanes/h...
Release 1.3.0 · chrisbanes/haze
What's Changed Add Brush support to HazeTint by @chrisbanes in #481 Move all samples to shared by @chrisbanes in #484 Add Bottom Sheet sample by @chrisbanes in #485 Fix alpha property changes not ...
github.com
January 28, 2025 at 8:12 AM
Big +💯 to this

However, the same can be said about AndroidX bumping up the compileSdkVersion
AndroidX upgraded to Kotlin 2.1.0 and just learned that we are forcing all non-JVM/Android (iOS, WASM, etc) users of our KMP libraries to upgrade to KGP 2.1.0, that ... is not great.
Learn why that is important for JDK and KGP and how to set that up.

www.liutikas.net/2025/01/10/C...

#gradle #kmp
Conservative Librarian - Hold Back For Your Users To Flourish
There are a number of things that make software libraries easy to use. Giving library users the flexibility to choose the tools and the versions of these too...
www.liutikas.net
January 14, 2025 at 9:12 AM
💠 Haze 1.2.0 has been released

The big change in this release is that it now supports overlapping blurred areas.

🔗: github.com/chrisbanes/h...
January 9, 2025 at 4:05 PM
I'm thinking about renaming the modifiers in Haze but not quite sure what to use.

If you want to help, you can comment here:

github.com/chrisbanes/h...
Modifier rename · chrisbanes haze · Discussion #451
Hi everyone. In v0.9 Haze was completely re-written in a way where the way that Haze works underneath was completely inverted. Pre-v0.9, all of the drawing and logic was performed by your Modifier....
github.com
December 19, 2024 at 8:33 AM
💠 Here's a sneak preview of something that I've been working on in Haze: overlapping areas

With this you'll be able to implement those classic glassmorphic card effects. I still need to run the performance benchmarks, but it seems to be working nicely...

🔗: github.com/chrisbanes/h...
December 11, 2024 at 9:25 PM
Here's the slides from a talk I gave at work about Haze.

There's no recording or anything, but the slides should hopefully be self-explanatory

chrisbanes.me/talks/haze-t...
Haze - Real time background blurring
Description # This is an short tech talk which I delivered at work about Haze: https://github.
chrisbanes.me
December 9, 2024 at 2:15 PM
Haze 1.1 💠 has been released!

The main change is the new 'Input Scale' parameter, which allows you to set an optional (down)scaling mode. This should have a positive effect on performance when enabled.

github.com/chrisbanes/h...
December 3, 2024 at 8:27 PM