Catalin P's Avatar

Catalin P

@catalinprata

Father, husband, Mobile software developer and nature lover :) .

40
Followers
132
Following
44
Posts
13.10.2024
Joined
Posts Following

Latest posts by Catalin P @catalinprata

Preview
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 most important concept to understand when starting with KMP, and it's simpler than it sounds. expect declares the contract in shared code; actual implements it per platform. How It Works…

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…

09.03.2026 18:23 👍 0 🔁 0 💬 0 📌 0
Preview
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 LiveData just to observe a simple field change, these might be exactly what you've been missing. Property delegates let you intercept reads and writes without boilerplate setters. What Is a Property Delegate? In Kotlin, a property delegate is an object that handles the…

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…

09.03.2026 18:22 👍 0 🔁 0 💬 0 📌 0
Preview
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 up the sky during thunderstorms. Building an android weather effects live wallpaper engine means creating a system that fetches live weather data, maps conditions to visual effects, and layers them all efficiently without draining your battery.

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…

07.03.2026 15:42 👍 0 🔁 0 💬 0 📌 0
Preview
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 50,000 items, and you've just allocated four lists where you might only need the first ten results. Kotlin's Sequence type solves this with lazy evaluation — elements are computed one at a time, on demand, and only as far as the pipeline needs to go.

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…

07.03.2026 15:34 👍 0 🔁 0 💬 0 📌 0
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 LLM to help you think through the problem, suggest hypotheses, and generate fixes.

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.…

06.03.2026 06:29 👍 0 🔁 0 💬 0 📌 0
Preview
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 — reusable prompt templates that Claude Code loads on demand, so you get consistent, project-aware output with a single slash command instead of typing the same paragraph every time. A skill is just a Markdown file with a structured prompt inside it, stored in…

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."…

05.03.2026 18:28 👍 0 🔁 0 💬 0 📌 0
Preview
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 hand-drawn seasonal landscapes to your Android home screen. But the real magic is what happens underneath: the wallpaper syncs with your real location to shift the sky from dawn to dusk, mirrors actual weather conditions, and even tracks moon phases and shooting stars.

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…

05.03.2026 05:55 👍 0 🔁 0 💬 0 📌 0
Preview
Writing Android Tests and Debugging With Claude Code: A Practical Workflow The Part of Android Development "Nobody Enjoys" 😛 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 eliminate either task, but it changes the experience significantly. It can draft test cases from a description, explain why a crash is happening at a specific line, and suggest fixes grounded in your actual codebase — not generic Android advice.

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

The Part of Android Development "Nobody Enjoys" 😛 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…

03.03.2026 06:32 👍 1 🔁 0 💬 0 📌 0
Preview
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 it's ceremonial: create a mutable collection, build it up imperatively, then convert it back to a read-only version. The mutable list is just scaffolding — what you actually want is the final read-only result. Kotlin 1.6 introduced a cleaner alternative: …

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…

02.03.2026 17:07 👍 0 🔁 0 💬 0 📌 0
Seasons Live Wallpaper Android
Seasons Live Wallpaper Android YouTube video by KazyDroid

Spring is almost here 🌸
Cherry blossoms, a sky that shifts from dawn to dusk, real weather effects & touch drawing with petals — animated on your Android home screen.
Seasons Live Wallpaper — a living window to nature.
#Android #LiveWallpaper #Spring #AndroidApp youtu.be/_QWBN2BtBQY?...

02.03.2026 10:53 👍 1 🔁 0 💬 0 📌 0
Preview
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 a lot of boilerplate. Kotlin's standard library has a quiet answer to this: …

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…

02.03.2026 06:26 👍 0 🔁 0 💬 0 📌 0
Preview
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 AI assistant and one that feels like it actually knows your codebase comes down to one file: …

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…

01.03.2026 19:12 👍 1 🔁 0 💬 0 📌 0
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, and you have to name both the timing variable and the result variable separately.

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 =…

01.03.2026 14:06 👍 0 🔁 0 💬 0 📌 0
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 need to get productive with Claude Code on Android projects.

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…

28.02.2026 09:08 👍 1 🔁 0 💬 0 📌 0

"Funny" to see how tax money are going to where the spoiled Trump kid wants, I just hope those who voted him, see already that their life is way better than before :)). Because the rest of the world is in shock at his stupidity and s$$t he is doing in the world.

08.01.2026 08:01 👍 0 🔁 0 💬 0 📌 0
Preview
LG says its CLOiD home robot will be folding laundry and making breakfast at CES The LG CLOiD home robot can fold laundry and make breakfast in your conveniently dystopian “zero labor home.”

LG says its CLOiD home robot will be folding laundry and making breakfast at CES

04.01.2026 19:20 👍 25 🔁 9 💬 10 📌 7
Preview
Seasons Live Wallpaper - Apps on Google Play Experience each season's charm with interactive landscapes on your screen!

Seasons live wallpaper for those who like to have live wallpapers. The night mode is quite nice and comes up live weather reaction support play.google.com/store/apps/d...

04.01.2026 15:43 👍 0 🔁 0 💬 0 📌 0

This song is AI generated with Suno, even though I am not a big fan of that I do like the lyrics a lot and do sounds ok too

21.12.2025 06:15 👍 2 🔁 0 💬 0 📌 0
Like Water, Like Fire
Like Water, Like Fire YouTube video by Bots and Beats

music.youtube.com/watch?v=sT6s... 🎶

21.12.2025 06:13 👍 2 🔁 1 💬 1 📌 0
Post image

Working on a plugin that provides real-time stability analysis for Jetpack Compose functions in Android Studio.

20.10.2025 13:16 👍 43 🔁 4 💬 6 📌 1

And according to their actions too...

22.09.2025 10:06 👍 0 🔁 0 💬 0 📌 0
AI and the paradox of trust | Yuval Noah Harari
AI and the paradox of trust | Yuval Noah Harari YouTube video by Yuval Noah Harari

Interesting point of view. www.youtube.com/watch?v=8GaW...

09.09.2025 07:42 👍 0 🔁 0 💬 0 📌 0
The official Android docs on test doubles are quite needed today.

Please write fakes 🙏 , avoid mocks as possible. Assert output state, not behavior. Think of a program or a logical part of it as: input->output

https://developer.android.com/training/testing/fundamentals/test-doubles

The official Android docs on test doubles are quite needed today. Please write fakes 🙏 , avoid mocks as possible. Assert output state, not behavior. Think of a program or a logical part of it as: input->output https://developer.android.com/training/testing/fundamentals/test-doubles

The official Android docs on test doubles are quite needed today.

Please write fakes 🙏 , avoid mocks as possible. Assert output state, not behavior. Think of a program or a logical part of it as: input->output

https://developer.android.com/training/testing/fundamentals/test-doubles

27.07.2025 20:13 👍 21 🔁 9 💬 0 📌 0

I like it, the name and the actual "implementation" seem to be in sync. The design seems to be expressive to me at least :). Can't wait to see it on my phone (in the OS)!

15.05.2025 05:45 👍 0 🔁 0 💬 0 📌 0

They say AI is great for humanity... well since AI does a lot for us, they(ultra-rich) should also be able to pay more and let employees work less hours right? Or is it all bullshit or great just for the ultra-rich?

12.02.2025 10:04 👍 1 🔁 0 💬 0 📌 0
Preview
Demystifying DeepSeek We explore the technical details beneath DeepSeek to explore what makes it unique and distinctive in the world of AI models.

My colleague Prasanna Pendse has written a deep dive into DeepSeek: first impressions of usage, highlights from their papers, and musings on what's next

www.thoughtworks.com/insights/blo...

31.01.2025 17:16 👍 206 🔁 30 💬 9 📌 1

Also the gemini chat from AS seems to reply with tons of duplicated lines from time to time but daily...

Not sure if this happens only for me or not :) .

31.01.2025 16:03 👍 0 🔁 0 💬 0 📌 0

Anyone using #AndroidStudio's (ladybug feature drop 2024.2.2) #Gemini functionalities like "code transform"?
I've been using it for a while now and it seems to work fine for a limited number of lines of code, like if a class has +400 or so lines of code it seems to fail to do any changes...

31.01.2025 16:02 👍 0 🔁 0 💬 1 📌 0
Preview
GitHub - skydoves/flow-operators: 🌊 Flow operators enable you to create restartable, pausable, or one-shot StateFlow. 🌊 Flow operators enable you to create restartable, pausable, or one-shot StateFlow. - skydoves/flow-operators

I just published a new open-source library, Flow Operators.

🌊 Flow operators enable you to create restartable, pausable, or one-shot StateFlow.

github.com/skydoves/flo...

26.01.2025 06:30 👍 9 🔁 1 💬 1 📌 0
Preview
The future is adaptive: Changes to orientation and resizability APIs in Android 16 Build adaptive apps that support various screen sizes and orientations, promoting consistent user experiences across different Android devices.

I welcome this change: no more "orientation" for apps in large screens. Let the user decide! android-developers.googleblog.com/2025/01/orie...

24.01.2025 09:13 👍 18 🔁 2 💬 0 📌 1