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.
0275
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.
0113
Chris Banes @chrisbanes.me · 16/08/2026
IMO those are 2 small categories, at the very extremes of the curve. It’s also way more complicated than that. I enjoy coding and delving into hard problems. I also enjoy quickly turning ideas into results. I also sometimes find coding a chore. AI is a tool, use it where it makes sense.
111
Chris Banes @chrisbanes.me · 16/08/2026
No I don’t believe that. AI on the whole enhances people’s ability to express their intent. Whether they write by copying code from samples, or getting AI to write it (and hopefully learn from it), it doesn’t really matter imo.
000
Chris Banes @chrisbanes.me · 15/08/2026
I do agree, but there’s I also want to challenge the point that only human’s can create ‘quality’ code. I’ve seen a *lot* of times where the code produced by someone using AI is better than what they would have produced without AI.
300
Chris Banes @chrisbanes.me · 14/08/2026
Sure, but the opposite can also be true. You spend too long contemplating that you don’t get anything in front of users for feedback, etc.
010
Chris Banes @chrisbanes.me · 14/08/2026
It’s not really meant to imply anything. AI is a tool, and it’s up to you how you use it. Sloppy code and shipping unfinished features isn’t just a problem with AI, human devs have been doing that for a whole lot longer.
140
Chris Banes @chrisbanes.me · 14/08/2026
I think that’s a bit too reductive. Treating the fact that a system can do X as evidence of the system’s purpose stretches the premise well beyond usefulness.
100
Chris Banes @chrisbanes.me · 14/08/2026
Ignoring a (very good) tool because you can write lots of sloppy features feels a bit like ‘cutting your nose to spite your face’. As a counterpoint, nearly all of Haze’s Glass impl was written by GPT. I orchestrated the approach, code, tuning & testing, and I am personally happy with the result.
360
Chris Banes @chrisbanes.me · 12/08/2026
You can also try everything out in your web browser here 👇 chrisbanes.github.io/haze/latest/...
chrisbanes.github.io
Haze samples
030
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/
1191
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
github.com/himattm/dejavu
github.com
GitHub - himattm/dejavu: A lightweight framework for tracking and asserting against Jetpack Compose recompositions.
A lightweight framework for tracking and asserting against Jetpack Compose recompositions. - himattm/dejavu
060
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 · 02/05/2026
Thanks! Ideally, distribute your own.
010
Chris Banes @chrisbanes.me · 29/04/2026
Been tinkering with this: github.com/chrisbanes/h.... Decided to punt and get the foundation done first. Point taken though, this needs a sample.
github.com
[Experiment] Liquid Glass by chrisbanes · Pull Request #839 · chrisbanes/haze
Still not sure whether this will land or not, but it's a fun experiment to prove out the VisualEffect mechanism
020
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 · 31/03/2026
🦞🦞🦞🦞🦞
100
Chris Banes @chrisbanes.me · 30/03/2026
This is opposed to Gradle + KMP builds (with iOS) which takes 15 mins, at a _minimum_.
210
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 · 22/01/2026
Do you have any (rough) numbers of how much these cost at runtime?
120
Chris Banes @chrisbanes.me · 17/01/2026
The $20 sub for Codex is really generous for the price. I wouldn’t be surprised if it’s close to the CC $100 plan in terms of allowance
110
Chris Banes @chrisbanes.me · 16/01/2026
GPT-5.2-Codex is listed at 272k but I’m not sure if that is actually true. I can’t find anything to confirm that anyway.
110
Chris Banes @chrisbanes.me · 16/01/2026
I like Copilot (it’s basically a more basic version of Cursor), but beware that a lot of the models have a reduced context window size. models.dev?search=copil...
models.dev
Models.dev — An open-source database of AI models
Models.dev is a comprehensive open-source database of AI model specifications, pricing, and features.
110
Chris Banes @chrisbanes.me · 15/01/2026
OpenAI mostly (it uses oAuth so you can use your CGPT sub), and Antigravity (mostly for the free Opus/Sonnet allowance).
120
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 · 14/01/2026
In some ways I really like GitLab, in other ways it’s infuriating. It’s CI system being top of my list…
020
Chris Banes @chrisbanes.me · 13/01/2026
+1 to this, although I personally prefer a mix of Codex 5.2 and Sonnet for coding (depending on task complexity). Codex is also my favourite for code reviews. Opus is too expensive to be a pure coder imo.
050
Chris Banes @chrisbanes.me · 12/01/2026
code when? 😆
160
Chris Banes @chrisbanes.me · 07/01/2026
Thanks Don! 🙌
000
Chris Banes @chrisbanes.me · 29/12/2025
Definitely try other models. I know that Gemini 3 scores highly on benchmarks but I still find the Claude models the best in real world coding (by a good margin). I have a follow up blog post in draft which goes more into this.
250
Chris Banes @chrisbanes.me · 29/12/2025
Just get AI to review it? (Only half joking as I do actually do this)
110
Chris Banes @chrisbanes.me · 29/12/2025
Totally agreed, AI isn’t the only reason this happens.
010
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
Not sure. It doesn’t seem to run any builds anyway, as the commits are full of compile errors
010
Chris Banes @chrisbanes.me · 24/12/2025
just found the limitation of Copilot. Since it can't run builds/lints/etc as part of the Agent run, you end up doing a lot of bouncing around via CI. If your CI is slow (GitHub Actions are not exactly the fastest) then you get into a bit of loop.
100
Chris Banes @chrisbanes.me · 24/12/2025
Yep, but I did this solely from my phone and the GitHub app. The ecosystem moat that GH have is significant.
010
Chris Banes @chrisbanes.me · 24/12/2025
And that’s where we’re at. Still need to finalise a few things, but I’m sure that this PR will be landing later today without me touching a physical keyboard. 5/
270
Chris Banes @chrisbanes.me · 24/12/2025
I wasn’t quite happy with the final solution, so added a review with some comments… github.com/chrisbanes/h... 4/
github.com
Add ColorFilter support to HazeTint and refactor to sealed interface by Copilot · Pull Request #854 · chrisbanes/haze
Refactors HazeTint from a data class to a sealed interface with concrete variants for color and brush tints, adding ColorFilter support for advanced tint transformations (color matrices, lighting e...
110
Chris Banes @chrisbanes.me · 24/12/2025
About a hour later, the Agent was in full swing. It had fully fleshed out the plan, and began implementing… github.com/chrisbanes/h... 3/
github.com
Add ColorFilter support to HazeTint and refactor to sealed interface by Copilot · Pull Request #854 · chrisbanes/haze
Refactors HazeTint from a data class to a sealed interface with concrete variants for color and brush tints, adding ColorFilter support for advanced tint transformations (color matrices, lighting e...
110
Chris Banes @chrisbanes.me · 24/12/2025
Started an ‘Agent Chat’ via the GitHub app. I gave it the URL of the GitHub issue, and we iterated on the high-level proposed plan to fix. Once happy, I asked it to “Upload a Draft PR” It created a placeholder PR immediately: github.com/chrisbanes/h... 2/
github.com
Add ColorFilter support to HazeTint and refactor to sealed interface by Copilot · Pull Request #854 · chrisbanes/haze
Refactors HazeTint from a data class to a sealed interface with concrete variants for color and brush tints, adding ColorFilter support for advanced tint transformations (color matrices, lighting e...
120
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 · 23/12/2025
Yep. I have a Hugo partial which takes the embed URL and calls the microlink REST API. It returns a JSON dump containing various bits of data (title, image, etc). Here’s the partial: gist.github.com/chrisbanes/a...
gist.github.com
microlink Hugo partial
microlink Hugo partial. GitHub Gist: instantly share code, notes, and snippets.
030
Chris Banes @chrisbanes.me · 23/12/2025
True. I guess it depends how critical the unfurled content is to your product. Localization can be largely fixed by passing through the locale info from the client. Anything geo related is obviously trickier, but can be improved by deploying the cloud function to lots of regions.
020
Chris Banes @chrisbanes.me · 23/12/2025
Is this not incredibly more efficient to do this on a backend somewhere? I personally use microlink.io as part of my Hugo blog build for exactly this purpose. If you want to write it yourself, it seems like something which is perfect for a cloud function.
microlink.io
Turns websites into data — Microlink
Enter a URL, receive information. Normalize metadata. Get HTML markup. Take a screenshot. Identify tech stack. Generate a PDF. Automate web scraping. Run Lighthouse.
220
Chris Banes @chrisbanes.me · 22/12/2025
Nice post!
110