Mykola Miroshnychenko

Writing about Android, Kotlin Multiplatform and building software that lasts.

  1. Building your own Agentic Skill

    In one of my previous posts, I covered what an MCP server is. Now I’ll explore another option for improving your interaction with LLMs & agents - more specifically, we’ll look into Skills. There’s no better way of understanding something than by building it yourself. So in this article, we will use all of our knowledge from the previous two articles on screenshot testing, and we’ll try to create our own skill to be used by others. What is a skill? As previously An MCP server is a “tool” that

  2. Setting up Android screenshot testing in CI with Git LFS.

    In the previous article, we looked at how to integrate screenshot testing with Paparazzi, how to create tests that are not brittle, and how we can use certain parameters to make our tests more effective. In this article, we’ll look into another problem associated with screenshot testing - more specifically, storing the screenshots remotely. As your app grows and gets more complex, so does the number of your screenshot tests. If you’re working on a real production application, the number of imag

  3. Introduction to Screenshot testing with Paparazzi.

    Screenshot testing can be a powerful tool, but it can also wreck your tests - here's how to use it properly. Introduction You’ve probably heard about screenshot testing but haven’t tried it. Or you tried it and it broke everything in your workflow, so you decided it was a bad idea. There’s a lot of hype around the topic, and many teams seem to be adopting this type of testing into their workflow. Integrating screenshot testing is fairly easy. What’s NOT easy is applying it properly without

  4. Rapid UI prototyping with Figma + Android MCP servers.

    I’m not a designer, so my designs usually suck. I will always choose to work with a professionally-made design if I have the opportunity. And now that we have agents — we can ask them to quickly build our app UI based on a Figma design. In this article, I’ll show you how to utilize MCP servers to build UIs that look exactly (well, almost) like the Figma design. What is an MCP server? From Wikipedia: The Model Context Protocol (MCP) is an open standard and open-source framework introduced by

  5. Overly relying on AI diminishes critical thinking and increases cognitive debt.

    I've noticed this myself. It's very tempting to keep on pushing Claude Code or other agents to generate code for your project. But at a certain point, you notice that you're avoiding reviewing the generated code. The thought process is: "Oh, it probably got it right - I'll review it later". Spoiler - you won't. That's why I decided I will have days where I don't use any AI at all. I will make sure that during these days I go over the code previously generated and actually think whether it make

  6. How a $5 tub of cottage cheese exposed a million-dollar UX flaw.

    I’m a massive fan of @Villa Market JP. They’re easily the best place in Bangkok for high-quality imports (and my specific breakfast obsession). But a recent late-night quest for cottage cheese turned into a masterclass in why "small" mobile UX flaws can cost a business serious money I love cottage cheese. In fact I love cottage cheese so much I ate it for a couple of years straight for breakfast and I didn’t get bored with it. For some reason, though, cottage cheese (good one) is hard to come b

  7. 6 Legacy App Horrors That I've seen - That Might Be Killing Your Business Too.

    I’ve spent years working with legacy mobile codebases. Some were stable, but most were "Jenga Towers" held together by hope and deprecated libraries. Legacy code is a silent tax on your business and a headache for devs. Here are the top 6 horrors I’ve encountered and how I’d fix them in 2026: 1. The Mother of all requests. It starts out with a home page that keeps growing and growing… While initially it might be a good idea to pre-load data - usually the bloat expands, as the complexity of th

  8. After a year of work (yes, a full year), my Kotlin Multiplatform course is finally ready!

    This course is designed specifically for Android developers who want to move into KMP in a structured way. If you’ve been thinking about getting into KMP, this is exactly the course I wish I had when I started. You can check it out here: https://learnkmp.com Also, if you want to receive monthly tips on KMP & Android to your inbox, you can join my newsletter and you will get a 15% discount on the course if you join now: https://subscribepage.io/ODZYLC Happy to answer any questions 🙂 promo v

  9. Be careful with commonMain dependencies in Compose Multiplatform!

    I’ve recently had a problem with importing a dependency in commonMain in CMP. More specifically I was trying out the new navigation3 component. Since I first tried out Nav3 in Android - I blindly copied over the dependency to my CMP project. My Android CMP build was working fine - and I was happy. However, I decided to give my other target a run - specifically the iOS one. I was very surprised when I couldn’t make the project compile. I quadruple-checked everything, cleaned gradle cache, and r

  10. Make your Gradle builds and Android Studio faster

    Recently I've had some issues with my Android Studio - it was lagging, freezing, etc., which got me thinking about how I can improve the speed of my builds and Android Studio in general. Here are the settings that I applied to my Gradle builds (global ones at ~/.gradle/gradle.properties), and so far they've been working like charm. Below are the settings of my Gradle. My set up is M1 Max with 64 GB RAM. What settings do you have to improve performance?

  11. Avoid vibe-coded services like a plague for important projects.

    I was using a certain service for my course with which I was explaining the networking part of KMP. And then a couple of weeks back the service stopped working. I looked into the issues on Github - the owner of the service said they were attacked constantly (because the service didn’t have authentication) so they’re taking steps to integrate protection. Sounds fine to me. So the service started working again after a couple of days / week. But recently I started getting weird errors once again.

  12. What is a circular dependency, and how can you resolve it? 🤔

    If you’re new to DI, whether it’s Hilt or Koin - sooner or later, you’ll encounter a circular dependency (I hope you don’t, but let’s assume you will 😢). This post is an explanation of a challenge I posted two days ago So what is a circular dependency? 🤔 According to Wikipedia: A circular dependency (or cyclic dependency) is a relation between two or more modules / classes which either directly or indirectly depend on each other to function properly 🔄 Essentially, it’s an infinite loop,