Sign in

Chris Banes

@chrisbanes.me
1.6K followers 66 following 177 posts

🕸️ chrisbanes.me 👨‍💻 Senior Staff Software Engineer

PostsRepliesMedia
Chris Banes @chrisbanes.me · 22/09/2026
Haze 2.0 is here, and it's a big one! 🎉 For Compose Multiplatform: 🫧 Glass with refraction & lighting ⚡ Faster blur 🎛️ Adaptive rendering quality 🎨 Reusable styles 🛠️ Build your own effects chrisbanes.me/posts/haze-2...
chrisbanes.me
Haze 2.0
Haze 2.0 brings Glass, a new effects API, performance improvements, and experimental Android native backdrop support to Compose Multiplatform.
0265
Chris Banes @chrisbanes.me · 13/09/2026
Compose now has progressive blur. Do you still need Haze? chrisbanes.me/posts/compos...
chrisbanes.me
Compose has progressive blur. Do you still need Haze?
Compose’s new progressive blur API blurs a composable’s own content. Here’s how that relates to Haze and Android’s new backdrop API.
0103
Chris Banes @chrisbanes.me · 12/08/2026
🚀 Haze 2.0.0-alpha05 has been released! 🔎 Glass visual effect (finally) ⚙️ New Style-like API structure 💨 HazePerformanceMode toggle This should hopefully be the last alpha release chrisbanes.github.io/haze/
1201
Chris Banes @chrisbanes.me · 10/08/2026
Introducing Portico: a native macOS menu-bar app for private HTTPS doorways to services running on your Mac, via your @tailscale.com tailnet localhost:1234 → my-service.<tailnet>.ts.net github.com/chrisbanes/p...
github.com
GitHub - chrisbanes/portico: A private doorway to your local apps
A private doorway to your local apps. Contribute to chrisbanes/portico development by creating an account on GitHub.
080
Chris Banes @chrisbanes.me · 03/08/2026
Here's a little preview of the new glass effect coming to Haze 2.0 Should be in the next alpha release
0244
Chris Banes @chrisbanes.me · 22/07/2026
🛍️ Shopping isn’t a category I got Hermes Agent to match marketplace orders with my bank transactions, then categorise each item by what I actually bought. Same spending. A much clearer picture of where the money went. chrisbanes.me/posts/shoppi...
chrisbanes.me
Shopping Is Not a Category
How I used Hermes Agent to match marketplace order emails with Actual Budget transactions, split purchases into individual items, and reveal where the money actually went.
041
Chris Banes @chrisbanes.me · 26/05/2026
Hunting down Jetpack Compose recomposition issues manually is a huge time sink I’ve spent the past few weeks using @mmckenna.me’s Dejavu to simplify this: - Write Dejavu tests to establish a baseline - Tell the agent to hunt for issues and A/B fixes - Profit
3181
Chris Banes @chrisbanes.me · 12/05/2026
🤖 I've just open-sourced a new set of skills, covering Kotlin, Compose and Android development. Very early days, but it covers a lot of things which crop up in code review regularly. github.com/chrisbanes/s...
github.com
GitHub - chrisbanes/skills: Skills for Kotlin, Jetpack Compose, and Android development
Skills for Kotlin, Jetpack Compose, and Android development - chrisbanes/skills
0453
Chris Banes @chrisbanes.me · 29/04/2026
💠 Haze 2.0-alpha01 is out! This is a big release, splitting Haze up into layers, with the goal of enabling pluggable visual effects. Let me know what you think! chrisbanes.me/posts/haze-2...
chrisbanes.me
Haze 2.0: A Pluggable Visual Effects Engine
Haze 2.0-alpha01 turns blur into a pluggable effect, splitting it into a separate module and opening the door to custom visual effects built on top of a shared rendering infrastructure.
2297
Chris Banes @chrisbanes.me · 30/03/2026
Starting hacking on an AI Agent orchestration tool (for myself). Decided to build it in Rust (because why not), and holy cow: the entire CI run takes ~40 seconds, and most of that is setting up the toolchain. github.com/chrisbanes/e...
github.com
feat: ACP agent client, orchestrator state machine, and multi-agent p… · chrisbanes/ensemble@930a0e7
Contribute to chrisbanes/ensemble development by creating an account on GitHub.
360
Reposted by Chris Banes
sinasamaki @sinasamaki.com · 21/01/2026
✨ ChromaDial is a new #ComposeMultiplatform library that enables you to create beautiful Dials for your #JetpackCompose app Its API is similar to the Slider, but instead works in degrees Just pass in and set the degree state #buildinpublic
2255
Chris Banes @chrisbanes.me · 15/01/2026
After becoming infuriated by Codex (the tool) lately, I've switched to @mariozechner.at's `Pi` and it's like a breathe of fresh air 🧘 All of the stuff I actually use, it's super fast, and most importantly it doesn't constantly ask permission to run `git` shittycodingagent.ai
shittycodingagent.ai
buildwithpi.ai
A terminal-based coding agent
2101
Chris Banes @chrisbanes.me · 29/12/2025
If your engineering team is 'senior-only' + AI-assisted… where do tomorrow's seniors come from? New blog post on the 'disappearing middle': chrisbanes.me/posts/disapp...
chrisbanes.me
The Disappearing Middle: How AI Coding Tools Are Breaking Software Apprenticeship
How AI coding agents are automating away the developer apprenticeship ladder. Discover three personas for using agentic programming effectively, when it accelerates work, and critical guardrails to pr...
64418
Chris Banes @chrisbanes.me · 24/12/2025
Tried out @github Copilot to write a small feature for Haze, all from my phone. It’s the ultimate in lazy programming, but I’m pretty mind blown. 🧵…
160
Chris Banes @chrisbanes.me · 10/12/2025
I've been looking into Liquid Glass details (experiment for Haze), and stumbled across this article by @kubekhrm.bsky.social. Simply wow. kube.io/blog/liquid-...
kube.io
Liquid Glass in the Browser: Refraction with CSS and SVG — kube.io
Explore how to recreate Apple's stunning Liquid Glass effect using CSS, SVG Displacement Maps, and refraction calculations.
4161
Chris Banes @chrisbanes.me · 28/09/2025
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...
g.co
‎Gemini - Gemini Advanced vs. ChatGPT-5 Comparison
Created with Gemini
270
Chris Banes @chrisbanes.me · 17/09/2025
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...
careers.thetradedesk.com
Staff Android Software Engineer - VenturaOS
090
Chris Banes @chrisbanes.me · 22/08/2025
Looking forward to being back at @droidcon.bsky.social London this year. I spent quite a while on this talk title…
3420
Chris Banes @chrisbanes.me · 19/07/2025
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.
0241
Chris Banes @chrisbanes.me · 02/07/2025
I don’t know how they expect anyone to know the location of this bar…
5421
Chris Banes @chrisbanes.me · 24/06/2025
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.
1140
Chris Banes @chrisbanes.me · 15/06/2025
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).
3244
Chris Banes @chrisbanes.me · 11/06/2025
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.
3264
Chris Banes @chrisbanes.me · 12/05/2025
💠 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...
1302
Chris Banes @chrisbanes.me · 23/04/2025
💠 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...
0252
Chris Banes @chrisbanes.me · 18/04/2025
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
3150
Chris Banes @chrisbanes.me · 10/04/2025
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.
2132
Chris Banes @chrisbanes.me · 09/04/2025
Focus bugs in Compose are the absolute worst. The system is so opaque and hidden, that trying to deal with them is borderline impossible.
181
Chris Banes @chrisbanes.me · 06/03/2025
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...
github.com
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...
1253
Chris Banes @chrisbanes.me · 20/02/2025
🪢 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...
chrisbanes.me
Multiplatform Strings
Simplify multilingual app development with Twine! Learn how to manage and export strings for iOS, Android, and Compose Multiplatform efficiently
3292
Chris Banes @chrisbanes.me · 13/02/2025
🚀 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...
chrisbanes.me
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!
155210
Chris Banes @chrisbanes.me · 11/02/2025
Spent 10 mins integrating Bluesky comments into my Hugo blog Shamelessly reusing @kau.sh’s code from bsky.app/profile/kau....
170
Chris Banes @chrisbanes.me · 11/02/2025
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.
4161
Chris Banes @chrisbanes.me · 28/01/2025
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...
github.com
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 ...
2274
Chris Banes @chrisbanes.me · 14/01/2025
Big +💯 to this However, the same can be said about AndroidX bumping up the compileSdkVersion
150
Chris Banes @chrisbanes.me · 09/01/2025
💠 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...
0586
Chris Banes @chrisbanes.me · 19/12/2024
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...
github.com
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....
0123
Chris Banes @chrisbanes.me · 11/12/2024
💠 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...
2370
Chris Banes @chrisbanes.me · 09/12/2024
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...
chrisbanes.me
Haze - Real time background blurring
Description # This is an short tech talk which I delivered at work about Haze: https://github.
1313
Chris Banes @chrisbanes.me · 03/12/2024
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...
1335
Chris Banes @chrisbanes.me · 29/11/2024
12x difference between the top and bottom quartiles (for WFH) is eye opening. Even for in-office, that difference is 5x.
162
Chris Banes @chrisbanes.me · 29/11/2024
Opened up Keynote for the first time, in what feels like forever. Hello my old friend. Where's that Magic Move button again?
1160
Chris Banes @chrisbanes.me · 12/11/2024
After what feels like a lifetime of development, I've decided to deprecate and archive Tivi 🫡 github.com/chrisbanes/t...
After roughly 9 years of development, I've decided that now (12th November 2024) is the time for Tivi to be 'complete'. After releasing 1.0.0 recently, I unfortunately just don't have the time or inclination to keep developing the app.

Another reason which has prompted this change is that I have no intention of allowing Google Play to publish my home address (through it's 'verification' process), therefore my developer account has been restricted and locked. C'est la vie.

I've also delisted the app on the iOS App Store.

Thanks to everyone who has used and tested the app. I hope that it's been useful to learn from.

🫡
19893
Chris Banes @chrisbanes.me · 07/11/2024
Haze 1.0 💠 has been released! This is a big release, not only because of the version number, but also because of the amount of changes since the latest stable release. You can read more below: chrisbanes.me/posts/haze-1...
chrisbanes.me
Haze 1.0
Haze 1.0 is a powerful library for achieving background blurring effects within Jetpack Compose and Compose Multiplatform apps.
97820