Solutions

Android Squared CardView

Recently, I had to add a perfect squared CardView and I wanted to achieve this without hardcoding its width and height. I happily discovered the power of ConstraintLayout. And so this is how I managed to create a perfect square which should work on every dimension. Heres some sample code that I used to create […]

, , ,
Circuit board representing platform layers
Tutorials

expect and actual: The Mechanism That Makes Kotlin Multiplatform Tick

The Core Problem KMP Has to Solve Kotlin Multiplatform lets you share business logic across Android, iOS, desktop, and web — but each platform still has its own APIs. Android has Log, iOS has NSLog, Android has SharedPreferences, iOS has NSUserDefaults. KMP’s answer to this is a two-keyword mechanism: expect and actual. It’s the single

, , , , ,
Code on a dark monitor screen
Tutorials

Kotlin Property Delegates You’re Probably Not Using: observable and vetoable

Why Property Delegates Often Go Unnoticed Most Kotlin developers know lazy — it’s everywhere. You see it in Android ViewModels, dependency injection setups, and library code. But the standard library ships two more property delegates that are surprisingly powerful and almost never discussed: Delegates.observable and Delegates.vetoable. If you’ve been wiring up manual setters or using

, , , , ,
Tutorials

Building a Weather-Reactive Rendering Engine for Android Live Wallpapers

Making Your Wallpaper Respond to Real-World Weather A beautiful sky gradient is a good start, but what makes Seasons Live Wallpaper feel special is that it reacts to the actual weather outside your window. Rain particles drift down when it’s raining. Snow accumulates during winter storms. Fog creeps in on humid mornings. Lightning flashes light

, , , , ,
Laptop with Kotlin code open
Tutorials

Lazy Computation in Kotlin: The sequence Builder and How It Can Save Your Memory

The Hidden Cost of Eager Collections Kotlin’s collection functions — map, filter, flatMap — are a joy to use. But they share one characteristic that can quietly hurt your app: they’re eager. Each call processes the entire source and allocates a brand new intermediate list. Chain three or four of them on a list of

, , , , ,
Articles

Rubber Duck Debugging with AI: Prompt Patterns for Effective Debugging

Rubber Duck Debugging with AI: The Modern Approach “Rubber duck debugging” is an old technique: you explain your bug to an inanimate object (a rubber duck), and in the process of explaining, you discover the problem yourself. Today’s AI assistants make this technique more powerful. Instead of talking to a duck, you can ask an

, , , ,
Code on a dark monitor
Tutorials

Claude Code Skills for Android: Automate the Boilerplate You Write Every Day

What Skills Are in Claude Code Once you’ve used Claude Code for a while you’ll notice you repeat the same prompts. “Create a new feature screen with a ViewModel and UiState.” “Add a Room entity and DAO for this model.” “Write a Hilt module that provides this repository.” These are perfect candidates for skills —

, , , , , ,
Seasons Live Wallpaper - for your Android device
Articles

Seasons Live Wallpaper — A Living, Breathing Home Screen for Android

What If Your Wallpaper Knew the Weather? Most live wallpapers loop the same animation forever. They look nice for a day, then you forget they’re even there. Seasons Live Wallpaper is different — it’s a wallpaper that actually pays attention to the world around you. Built by an indie developer from Romania, Seasons brings four

, , , , ,
Close-up of code on a screen
Tutorials

Writing Android Tests and Debugging With Claude Code: A Practical Workflow

The Part of Android Development “Nobody Enjoys” :P Writing tests and debugging are the two parts of Android development where most developers lose the most time. Tests feel like writing code twice, and debugging often means staring at a stack trace while trying to hold an entire call graph in your head. Claude Code doesn’t

, , , , , , ,
Tutorials

Stop Using mutableListOf + toList(): Meet Kotlin’s buildList, buildMap, and buildSet

A Familiar But Slightly Awkward Pattern If you’ve written Kotlin for a while, you’ve almost certainly written code like this: fun getActiveUsers(users: List): List { val result = mutableListOf() for (user in users) { if (user.isActive) result.add(user) if (user.isPremium) result.add(user.copy(label = “Premium”)) } return result.toList() // convert back to read-only } The pattern works, but

, , , , ,
Tutorials

Functional Error Handling in Kotlin: runCatching and the Result Type

The Problem With Try-Catch Everywhere Exception handling in Kotlin (and Java before it) has always had a composability problem. Once you introduce a try-catch block, you break the expression-oriented flow of your code. You can’t easily chain operations, return from them in one line, or pass the “success or failure” result to another function without

, , , , ,
AI assistant concept with code on screen
Tutorials

Claude Code for Android Development: Setup and CLAUDE.md That Actually Helps

Why Claude Code Is Worth Setting Up Properly for Android If you’ve tried using Claude Code for Android development without any configuration, you’ve probably found it helpful but inconsistent. It might suggest Retrofit when your project uses Ktor, generate Java when you want Kotlin, or miss your architectural conventions entirely. The difference between a generic

, , , , ,
Tutorials

Stop Using System.currentTimeMillis() for Benchmarking: Kotlin’s measureTimedValue and Duration API

The Old Way: Manual Time Measurement If you’ve ever benchmarked a function in Kotlin or Android, you’ve probably written something like this: val start = System.currentTimeMillis() val result = doExpensiveWork() val elapsed = System.currentTimeMillis() – start Log.d(“Perf”, “doExpensiveWork took ${elapsed}ms, result=$result”) It works, but it’s noisy. You need three lines just to time one call,

, , , , ,
Tutorials

Claude Code for Android Development: Setup, Best Practices & Gotchas

AI-assisted development has moved well beyond autocomplete. Claude Code — Anthropic’s agentic coding tool — can read your project, reason about your architecture, write Kotlin, generate tests, and even help you debug Gradle. But like any powerful tool, it rewards those who know how to use it well. This guide walks you through everything you

, , , , , , ,
Articles

Using Claude to Write Better Play Store Descriptions (With Prompt Templates)

Writing a Play Store listing that converts is harder than it looks. The character limits are tight, keywords matter, and you have about three seconds to grab attention. Here’s how I use Claude to make it easier — including the exact prompts I use for Seasons Live Wallpaper. Keyword Research Prompt “I have an Android

, , , ,
Scroll to Top