Maestro: E2E tests for Flutter that go beyond your app
Most E2E testing tools stop at the edges of your app. Maestro doesn't. Here's what it is, how it works, and how I use it in OpoSAS to validate real flows on device.
Most E2E testing tools stop at the edges of your app. Maestro doesn't. Here's what it is, how it works, and how I use it in OpoSAS to validate real flows on device.
OpoSAS is an app for preparing Spanish civil service exams: practice tests, per-topic statistics, an AI assistant, and Premium subscriptions. Here's how it's built.
My blog had been on WordPress for years and it worked. But without version control, with a sidebar that fragmented focus, and no reading time on post cards, the time had come to rebuild it from scratch. Here's what happened when I used Claude Code with the VGV Wingspan plugin to plan and build it.
As I mentioned in the post about SOLID principles, we're starting this series with the Single Responsibility Principle — for me, one of the most important principles in software development.
The SOLID principles offer a guide to writing Flutter code that's easier to maintain, extend, and understand. They help you build more robust and scalable applications while reducing bugs and improving collaboration.
After a long time — too long — I'm back to writing. This time we're switching things up and diving into Flutter for cross-platform development.
After implementing FirebaseDB for Android, we wrap up this series with the iOS database implementation.
Continuing the Firebase Xamarin.Forms series — after implementing authentication for both platforms, we now tackle the Firebase Realtime Database on Android.
In the previous article we implemented Firebase.Auth for Android. Today we continue with the iOS implementation.
Following the introduction to Firebase and Xamarin.Forms, we start the implementation today — focusing on authentication for the Android project.
The goal of this new series is to introduce Firebase, explore some of its features, and show how to integrate it into cross-platform apps built with Xamarin.Forms.
Should you build mobile apps natively or reach for a cross-platform framework? There's no absolute answer — but there are better and worse choices depending on what you're building.
In this post we cover UI testing with Espresso, closing out the TDD in Android series.
Continuing the TDD in Android series — this time with integration tests and how to test UI layer interactions.
Continuing the TDD in Android series — in this installment we write our first unit tests.
As we discussed in the previous article, unit tests are critical for development quality, and TDD forces you to write those tests before writing any production code. Here's how to set up an Android project for TDD.
This is the first post in a series on TDD — something I discovered relatively recently that I think should be fundamental to every development project.
RecyclerView has been one of Android's most important components and appears in the majority of apps. Here's how to use it.
MovieList lets you manage your movie collection, watch trailers, and look up metadata.
KidsChat is a messaging app for kids with parental controls built in.
Design patterns were a mystery to me for a long time. Here's what they actually are, why they matter, and how to pick the right one.
You need Java to build Android apps — right? Not quite. There are other options that have been gaining ground over the past few years.