Ash Davies

Google Developer Expert for Android and Kotlin, failed blogger, enthusiastic public speaker, maker (and breaker) of shiny things at SumUp. Kotlin aficionado, Multiplatform manipulator, prolific facilitator of cute cat photographs, spends more time travelling than working (he/him).
Droidcon London: Navigation in a Multiplatform World

Navigation in a Multiplatform World: Choosing the Right Framework for your App

Navigation in mobile, desktop, and web applications is such a fundamental part of how we structure our architecture. In order to both obtain functional clarity, and abstraction from platform level implementation. For a long time, there have been options available specific to each platform, and even options part of the platform framework itself. Though it can be difficult to find the right option for platform-agnostic code, ensuring consistency. Some go one step further, providing an opinionated guide on how to architecture your application. ...

Droidcon NYC: Navigation in a Multiplatform World

Navigation in a Multiplatform World: Choosing the Right Framework for your App

Navigation in mobile, desktop, and web applications is such a fundamental part of how we structure our architecture. In order to both obtain functional clarity, and abstraction from platform level implementation. For a long time, there have been options available specific to each platform, and even options part of the platform framework itself. Though it can be difficult to find the right option for platform-agnostic code, ensuring consistency. Some go one step further, providing an opinionated guide on how to architecture your application. ...

Droidcon Berlin: Testing in Practice

Testing in Practice: Keeping Your Tests Concise and Declarative

Testing isn’t always everybody’s favourite task, but that doesn’t need to be the case! Writing tests can be an enjoyable way to practice your coding techniques! But with conflicting opinions on writing test code that is declarative, explicit, terse, concise, and isolated, it can be tough to know how to satisfy all of these whilst still retaining your will to live. I’ll be covering a few techniques, and mechanisms, for writing idiomatic Kotlin code that leaves you with a beautiful test case that not only fulfils all this but gives you accurate code documentation for your project. ...

mDevCamp Prague: Refactoring and Test Fakes

Refactoring and Test Fakes: Crafting Resilient Code with Confidence

Crafting resilient code is one of the most important things we do as software developers, but it’s much easier said than done! Building with confidence requires an appropriate test harness and automated safeguards to ensure your software is robust. In most real world scenarios, we don’t have the luxury of working with a green field project, so it can be difficult to apply best practices whilst maintaining legacy code. How then can we refactor, and effectively utilise test fakes appropriately? ...

Berlindroid: Naming is Hard

Naming is Hard: How Naming Can Bite You in the Ass

Naming is hard, it’s no unfamiliar thing to software engineers that describing our software can sometimes be just as hard as writing it in the first place. But did you know that the names we give our well-intentioned ideas can come back to haunt us? It would turn out that naming is not just hard, but it has implications! Gradle will often not actually report when names collide! Which means you might end up with unexpected class resolutions! Which leads us down the rabbit hole of, how does Java resolve classes in the first place?! ...

Droidcon London: Refactoring and Test Fakes

Refactoring and Test Fakes: Crafting Resilient Code with Confidence

Crafting resilient code is one of the most important things we do as software developers, but it’s much easier said than done! Building with confidence requires an appropriate test harness and automated safeguards to ensure your software is robust. In most real world scenarios, we don’t have the luxury of working with a green field project, so it can be difficult to apply best practices whilst maintaining legacy code. How then can we refactor, and effectively utilise test fakes appropriately? ...

Droidcon Lisbon: This Year in Android

What a Long Strange Trip it's Been: This Year In Android

The Android community is a fast evolving society of excellent people who passionately involve themselves in their ecosystem. This means the progress of developments can be fast, blazingly fast! Inspired by other content creators and newsletters that keep us informed about the most recent events, I decided to document news, events, and releases every week for a year. Starting from the end of Droidcon Berlin, the world’s best Android developer conference. ...

Droidcon Lisbon: Beyond the Mockery

Beyond the Mockery: Why We Should Embrace Testing Without Mocking Frameworks

In software development, mocking is a popular technique used to simulate dependencies and test behaviour without relying on external systems. However, as with any technique, there are pros and cons to using mocks. In this talk, I’ll discuss why using mocks may not be the best approach and why we should instead use fakes or in-memory implementations of well-defined interfaces. We will explore the drawbacks of mocks, including how they can lead to brittle tests, slow down development, and make it difficult to refactor code. ...

Droidcon NYC: Beyond the Mockery

Beyond the Mockery: Why We Should Embrace Testing Without Mocking Frameworks

In software development, mocking is a popular technique used to simulate dependencies and test behaviour without relying on external systems. However, as with any technique, there are pros and cons to using mocks. In this talk, I’ll discuss why using mocks may not be the best approach and why we should instead use fakes or in-memory implementations of well-defined interfaces. We will explore the drawbacks of mocks, including how they can lead to brittle tests, slow down development, and make it difficult to refactor code. ...

Droidcon Berlin: This Year in Android

What a Long Strange Trip it's Been: This Year In Android

The Android community is a fast evolving society of excellent people who passionately involve themselves in their ecosystem. This means the progress of developments can be fast, blazingly fast! Inspired by other content creators and newsletters that keep us informed about the most recent events, I decided to document news, events, and releases every week for a year. Starting from the end of Droidcon Berlin, the world’s best Android developer conference. ...