This year’s Google Developers Group (GDG) Melbourne Devfest was another great day of learning about how other teams are tackling issues around Android development, AI/ML, Flutter, web and cloud. Like last year, REA hosted the event at its offices in Richmond with 22 talks across two rooms. Here’s a few of the highlights from the talks I attended.

Design Patterns Need Not Apply
It hadn’t occurred to me how Kotlin can address various challenges that the traditional Gang of Four design patterns aim to solve. For example:
- The builder pattern becomes less relevant with named parameters
- Extensions can replace the need for adapters
- State machines can be replicated with sealed interfaces and immutability

There are obviously still many scenarios where classic design patterns are needed but it helped explain why we don’t see as many Builders and Adapters when using Kotlin.
Gemini Slackbot Demo
This was a more DevOps-focussed talk demonstrating the steps required to build a Slackbot using Python, Docker, Gemini 1.5, Google Cloud and Terraform. In this demo the bot did not have context-awareness of the surrounding Slack content but I did get a chance to discuss with another attendee how this could be added and his experience with similar tools like Glean and Rovo.
Can Copilot Transform Your Health?
Having recently been diagnosed with Celiac’s disease, my ex-colleague Jonathon Reid gave a very cool overview of how he rapidly developed a gluten-detection app using GitHub Copilot.

Interestingly, he chose Copilot over Gemini for its maturity and the fact that he already has security approvals to use Copilot. Allowing him to write 90% of the MVP code in about five hours, it was obviously an incredibly helpful tool; a few of the areas where Copilot struggled were around app permissions and third-partly library integration, where it hallucinated the non-existent “accompanist-camera” dependency. 😆
Migrating from Material 2 to Material 3 at ANZ+
The resident Compose expert and all-around nice guy Ani Fichadia always give highly useful presentations and this year was all about the monumental task of migrating the ANZ+ app’s design system from Material 2 to Material 3.
The goal was to maintain a cohesive user experience and avoid having different themes in different parts of the app. They leveraged the backward-compatible aspect of Material 3 to essentially use the Material 2 theme while upgrading all the components and screens to Material 3; in the background are theme-switching infrastructure and bridging components to hopefully make the transition seamless. When the migration is complete the theme can be switched to Material 3 (I think 😅).
Also, using the Jetbrains’ Program Structure Interface (PSI) they created a syntax-aware migration tool that automated more than 98% of the migration effort!
Screens are Functions: Reimagining Navigation on Android
I actually couldn’t make it to the morning session but this talk stood out as I often find the standard navigation and compose-navigation libraries are unable to do all the things I’d like. Presented by another ANZx team member, Isaac Udy, I took a look at the GitHub repo for his Enro navigation library and the idea of treating screens as functions.
At first glance the NavigationKeys look similar to the type-safe routes included in the recent Compose Navigation 2.8.0 release but also allow for return values as navigation arguments. Enro was recently adopted by ANZx, which says a lot about its ability to function in real-world scenarios.
Conclusion
Beyond the technical information, Devfest is a fantastic opportunity to learn about team building and soft skills, catch up with ex-colleagues and network with other professionals in the field. This is a well-organised, friendly and talented community and we’re lucky to have them in Melbourne!
