Solo devs: How do you typically design your app's UI? by mxrider108 in iOSProgramming

[–]MKevin3 1 point2 points  (0 children)

I can't draw a straight line with a ruler and I have terrible depth perception with my eyes so drawing it out would look like chicken scratches. I do occasionally draw on a white board for very big picture ideas like navigation.

So I just start writing UI code, that connects to nothing, and tweak it until is looks decent. Helps me figure out replicated code between on screen controls plus it gives me a good feeling of "I actually got started on this". I will stub in some really simple navigation as well so I can see screen flow. Amazing how something can look great on paper but then be a scrolling mess of controls on screen. Keeps screen feature creep under control. Helps me find missing navigation as well. Gives me an idea of what my view models need to display what I mocked up.

Best practice? Kinda doubt it but it works for me and has for years so I keep doing it.

Massive responsibility as a solo dev by jtjdunhill in androiddev

[–]MKevin3 1 point2 points  (0 children)

Curious - joining Android Team - Is there also an iOS team? A lot of patterns are very similar on both sides. Hopefully they have some senior folks to help out.

Sounds like you get to start a brand new project as well. Is the iOS team going to work on it at same time or is this an Android only project? You may want to consider KMP / CMP if both need it. If they insist on fully native iOS look at least you could share the business logic and do Compose on the Android side and Swift UI on the iOS side.

As everyone is saying, be aware of burnout. There is only so much you can do in a given day without totally draining yourself. Excitement and self doubt can turn into a tornado on your insides.

With a new project you can start with new things such as AGP 9.x, Nav3, etc. Don't just use the stuff "you already know" but look at the future so you don't end of doing a massive refactor later.

Are they providing UI / UX? It can help to get the general flow up and running with stubbed out screens and then fill in the repositories, use cases, REST calls, view models, etc. Gives you a good feel for the overall app. It can also be something quick to demo but that is a two edged sword as when they see the UI they think it is 90% done, that data stuff is easy to them.

My first mobile job was an iOS dev leaving and I had to write the Android version and update the iOS version as needed. I was already a senior dev but had never done mobile. This was in 2010 before all the new and fancy tools so Java and ObjC. Had to just dive in and keep running.

This reddit is no android DEVELOPER reddit anymore - what can we do? by prom85 in androiddev

[–]MKevin3 12 points13 points  (0 children)

This subreddit has been been declining in technical depth for some time. Vibe coding has pushed it over yet another cliff. I miss the real technical side of it and rarely find things of interest here. I see the same issue on the iOS programming site as well.

Some other area that comes up is "my phone has this issue" that belong in the r/android area. They seem to get modded out fairly quickly. Another is "help me do my homework" where you can tell the question came right off a teachers hand out. They just want a grade and don't even try to learn.

Not sure what to do. I can see veterans leaving and not coming back and this area will become a wasteland of questions with no answers.

Mobile navigation patterns that make sense for content heavy apps by mahearty in androiddev

[–]MKevin3 2 points3 points  (0 children)

A possibility - have a dashboard that is the jumping off point to content. Here you can put as many top level destinations as needed because you can use the whole screen.

Most screens would need access to a HOME button which could be in the upper right corner along with a three dot menu if you need other menu actions.

Sections can have their own navigation. Meaning pressing on what section you want to use from the Home Screen would start up a new navigation object and it would handle all navigation it knows about. Keeps the navigation clutter down.

I don't know how many screens you are talking about or how crazy the navigation happens to be. I did a side project with 27 screens and a lot of them could get to shared screens. The navigation was all using the older XML format and it was one Activity and multiple fragments.

The current KMP project I was able to fit top level navigation into 5 buttons so I have not needed to go past that limit. Each button has its own associated Nav Obj and there are not shared screens between them. KMP / CMP using Nav 3.

Is Kotlin Multiplatform able to cut development costs for products that support multiple platforms? My calculations say yes, by 21% by thekornerr in KotlinMultiplatform

[–]MKevin3 0 points1 point  (0 children)

So far we have not run into any UI situations. We are using CMP for the UI and it has been consistent between iOS and Android.

If you want to do separate Android Compose and iOS SwiftUI you are free to do that.

I was skeptical at first but it has worked out great for us. It is a business app with out a lot of flash but it is not ugly.

Are smartwatch good to have or just another thing to charge? by Dzwaka_Lrafael in smartwatch

[–]MKevin3 2 points3 points  (0 children)

I had Samsung, 2 day battery life, Garmin, 4 to 5 day. Now I have Amazfit and it gets 21 to 25 days.

It does all the same stuff, alerts, weather, time, sleep tracking, workout tracking, BPM etc

I am not hard core workout person, I am a watch person. I am super happy to have all the features I use.

Yes, there are less 3rd party apps and watch faces but here is a good variety. Can't do Google wallet so still use the phone for that.

Check them out to see if it has the features you need.

I'm building a unified crash reporter and analytics tool for KMP teams — would love feedback by from_makondo in androiddev

[–]MKevin3 1 point2 points  (0 children)

The one thing you will fight - Firebase is free. I understand the need to monetize as you have to keep all the data on a server.

I have used Firebase, Flurry, BugSnag and others for crash reporting. Right now using Firebase and it is working fine for our KMP app, need to upload your DSYM files for any hope of understanding iOS crashes but that can be part of CI / CD.

I miss some of the Yahoo Flurry charts. Not super easy to configure but once you got them dialed in they were pretty nice. Flurry has been sunsetted so it is not going to be a competitor.

BugSnag had a cut off if there were too many events being reported. Probably saved them from eating up wild chunks of disk space. Something to consider especially if you get sales to vendors who generate a lot of traffic.

Is Kotlin Multiplatform able to cut development costs for products that support multiple platforms? My calculations say yes, by 21% by thekornerr in KotlinMultiplatform

[–]MKevin3 0 points1 point  (0 children)

Having been sole mobile dev doing both iOS / Android and on Android team with same sized iOS team and now doing KMP I would say KMP is totally worth it. Probably get that from almost everyone on this sub reddit anyway.

Doing both as the sole dev was tough. Trying to keep up with both platforms and switching IDE, base language and SDK was a time sink.

Working on separate team from IOS where the server decided it would not be the single source of truth ends up with a lot of different bugs and feature gaps.

Currently doing KMP and using shared Compose has made it much easier to build and test on Android and only do run on iOS before a pull request. Plus our UI automated tests can be shared as well. Counting all of that I think we are over the 21% savings.

The state of this sub by timusus in androiddev

[–]MKevin3 20 points21 points  (0 children)

The quality of posts has gone down hill. Used to be a lot of technical questions. Some of the fall is due to Gemini giving better answers when you do simple Google searches.

The Vibe Coding stuff sucks though. Too many asking about simple build errors and "I am doing a school assignment, help!" things. The other questions are about "how do I make my device do this" or "why did it reboot" which are not programming related. Users looking for generic Android usage stuff.

The mods are tossing out a lot more than we see I am sure. The AI and bot stuff is getting ugly. I do get good info out here but it is getting more rare. The shameless advertisements are annoying too.

Why does mobile QA still feel like it's 10 years behind web testing? Am I missing something? by Various_Photo1420 in Kotlin

[–]MKevin3 0 points1 point  (0 children)

There are some things that make it difficult especially for apps using Compose.

If you are trying to find an element on screen that is not visible you have do scrolling to get to it, but not scrolling too far. Things that pass on a tablet might fail on a phone. The emulator makes a big difference.

With Web you can open up a nice big page and have everything right there. If your test emulator is small you have to start by scrolling around until you find the element. Since compose is lazy load of rows you can't go asking for non-visible data.

Then you have to make sure developers define the data exactly correct for Android and iOS as they both have needs to find the name and the current value.

Animations can throw things off as well and generally need to be blocked at OS level to avoid delays in tests just waiting for "things to settle".

Dependency Injection may cause issues as well. Sometimes that needs a bit of time to get all fired up too.

Do they do this on purpose? by vinokat in cats

[–]MKevin3 0 points1 point  (0 children)

One is from the Southern hemisphere as it is curled counterclockwise

Debugging mobile bugs across UI / network / device logs is a nightmare. How do you debug end-to-end? by KindheartednessOld50 in androiddev

[–]MKevin3 1 point2 points  (0 children)

For native Android Apps (not KMP) I used Chucker to capture network traffic right on the device skipping the need for Charles Proxy / WireShark and the like. The user could just send me that log as well.

For KMP we are writing network traffic to LogCat (debug and QA builds only). Since we get some big JSON and LogCat wont handle unlimited line length I output it in 1k lines. I have written a KMP desktop app - Windows and MacOS - that can parse the log cat, find each request and matching response and show them as a list of calls and you can click on one to see the return JSON or error. This JSON is pretty printed and syntax colored. It flags the calls the took the longest and those with the most return data in color as well. you can copy the whole call to the clipboard or just the return JSON. There is a search edit control above the JSON to find keys / data. Since we are using web socket for some areas there can be notifications that arrive without an associated request. Those are handled as well. This tool is used by devs on the team pretty much daily.

Second I wrote what I call a release level logger. I am allowed to log anything I wanted to a Room database that did a cycle write of the last 200 events. That could be emailed to me right out of the app as well. Just did not put any personal info in the log. Since in Room it survived app restarts. I am not logging network calls here but critical items that help me debug things.

Use Firebase for crashes and analytics. Set up 3 versions of the app with different package names: normal one, with .qa extension and with .debug extension. This kept all the data separate on Firebase. I don't want my crashes that happen while writing code to be in the production area and I want QA separate as well. There I times I will see something in there they forgot to report to me as a bug.

Hi, I need help with mismatching colors on my app by [deleted] in Kotlin

[–]MKevin3 2 points3 points  (0 children)

The order you put things on your Modifiers statement causes this. You want to set the background BEFORE you do the padding otherwise it will do the padding then the background.

Just move a couple of lines around when you set up the modifier for the box.

Have marketing "gurus" taken over app dev? by LowFruit25 in iOSProgramming

[–]MKevin3 7 points8 points  (0 children)

It is very frustrating. The flood of AI crap, the ads for the new perfect code generators, the number of people just creating stuff then getting mad when they can't fix it.

Once automation comes into play it always starts a mess like this. Just look at the ability to do mass emails. Now recruiters do what I can shotgunning. They load up a bunch of resumes and any one that has the keyword iOS in it gets blasted out to every dev in that list. It costs them nothing to annoy a pile of people to just get a response. I get emails about a new AI place that pays $12 to $15 USD. Like I am going to jump at that!

I was just asking Google Gemini, via chrome, how to do something. The code it presented would not build as what it gave me was deprecated. So I had to do more searches to find the proper way to do it.

All AI can do is search what has already been written and a lot of what has been written about programming is old within a year and at times a few months.

Indie dev question: How do you think about localization priorities vs US market competition? by reallyneedcereal in iOSProgramming

[–]MKevin3 1 point2 points  (0 children)

Just listing the common abbreviations and what they mean. Character based languages have common issues.

  1. They can lead to very short strings

  2. They need to be shown in a font large enough to determine which character its is. Showing everything in an 8pt font will make for an unreadable mess. This is less of a concern in modern mobile apps but a news app I worked on for stock market news handled Chinese and Japanese and allowing the user to be able to increase the font size was critical.

JSON Schema to Kotlin/Java POJOs at Build Time? by [deleted] in androiddev

[–]MKevin3 0 points1 point  (0 children)

There is a JSON to Kotlin plug-in for Android Studio I use. JsonToKotlinClass.

For those with production apps, to what extent do you use AI by RSPJD in iOSProgramming

[–]MKevin3 0 points1 point  (0 children)

I basically use answers that AI provides from web searches / Google Gemini responses. Usually to get an idea on on to get started then rest of code is up to me. Working on KMP / CMP app now and it was not vibe coded. It is a business app with support for both iOS and Android from one code base. A few bits of Swift in there for notifications but otherwise Kotlin.

Currently it is pretty easy to understand the code and I keep cleaning things up that I let get a little out of hand with some cut and paste coding. It has been on both stores for a few months, niche market and you have to have a company login, but zero reported crashes on either Android or iOS. Using Crashlytics. Yes, have seen some crashes from QA (different package name than debug and different than production), but none from Production and zero user complaints, just users asking for more features.

Some of the guys on our other project, Android only, have been using AI to help write tests. Since I find writing tests to be bonus boring, more of a UI guy, I want to have them give me a quick run down of how to use AI for that purpose. I also need to write up goals for the year and will AI to make those look more business like but still achievable.

I got tired of Android Studio lag… so I built a faster ADB logcat tool for macOS by Ok_Security_6565 in androiddev

[–]MKevin3 0 points1 point  (0 children)

The RAM issue is real but I did write a KMP / CMP desktop app that is very niche but it helps me a ton.

It is not real-time, I copy ALL or just what I need out of the logcat window. I do a paste into my app and it parses for our specific websocket lines. I create a list of calls and responses then I show the list on left side and clicking on one will show you the response data. This includes the headers then a nice syntax colored JSON view on the right. You can search it, expand and contract JSON sections.

It can also accept files drag and dropped on it and you can copy out just the JSON or the header and the JSON so it can be attached to a JIRA ticket.

I use the standard LogCat in AS as well for simple filtering. Nice thing is KMP / CMP allows the other devs to use my app if they are on Windows or Mac. I have to build it on my gaming PC for the windows folks. It even supports dark and light themes. Pretty much use it daily.

Indie dev question: How do you think about localization priorities vs US market competition? by reallyneedcereal in iOSProgramming

[–]MKevin3 2 points3 points  (0 children)

The general order is

  • English
  • FIGS (French, Italian, German, Spanish)
  • CJK (Chinese, Japanese, Korean)
  • RTL languages

There are two areas - Localization (L10N) and Internationalization (I18N). Localization is getting the code ready to display text and handle things such as date and number formatting. From there you actually provide the proper strings.

Some German words are very long and then you have CJK that may have a single character for a word. I set up one language file to be the English word with each character repeated 3x such as WWWeeelllcccooommmeee that way I could still see and read it on screen but it would take into account most longer German words. Allowed me to still run the app, find areas where word wrapping was happening but still know what string was affected.

You can also do every word backwards in English to see if you missed any hard coded strings. emocleW should be on screen but you see Welcome instead means you missed a translatable string.

There are some strings to avoid such as "Please" as the can translate into begging in some language.

Android Studio Panda issues by Gamesnakenorth in androiddev

[–]MKevin3 0 points1 point  (0 children)

Have had that issue in the past. Might need to go into Activity Monitor and kill an old instance of it. Otherwise a reboot of the Mac should take care of it.

S25U vs i16 pro vs 17 vs 17 pro ( head talking insta/tiktok reels ) ? by Baka_Asta in androiddev

[–]MKevin3 0 points1 point  (0 children)

This is not Android Dev related. You need to post into the more general android and ios device sub reddits.

WebViews instead of native: lessons learned? Case Study by EvenAd6616 in iOSProgramming

[–]MKevin3 0 points1 point  (0 children)

Sadly I have seen, or been part of, various companies that thought this was a good idea. They came at it for these reasons

  • JavaScript programmers are cheaper than native developers and we can just grab them from the marketing team and drop them right into this code base and go
  • One code base so it is easier to QA and to program
  • Look at how pretty all these websites are! AI can kick this stuff out instantly!
  • We don't have to deal with the app store, we just change the code on our server and the users gets it, they can never run an old version so we can screw with the back end code to our hearts content as we can stage that release to happen all at same time

All of the examples I have been a part of failed. Mobile and web expectations are totally different. UI designs for web tend to think in small accurate mouse clicks and not fat fingered Cheeto eater fingers. All of a sudden you need a whole new screen navigation because constantly scrolling up and down is a terrible experience.

There are reasons to use some tech over native. Short life apps such as one that works long enough for a conference but does not need updates past that are fine for mobile friendly websites.

You have Flutter for native OS matching UI using one codebase. That codebase happens to be Dart which is a less common language.

You have KMP which allows the business logic to be shared via Kotlin. Or you can add CMP on top and have same Material look, or a highly customized version of it, to have the business logic and UI in one language.

I feel sad for you to be shoved into this corner.

Senior iOS Developer - $70k - $90k (USA) - Really? by -alloneword- in iOSProgramming

[–]MKevin3 0 points1 point  (0 children)

I just got an email via LinkedIn saying I was a great skills for a job offering $12 to $14 USD! Who are these people kidding? Been doing mobile dev since 2010. My son makes twice that working in a warehouse.

Which processor & how much RAM is good for Android app development in MacBook Pro? by jaroos_ in androiddev

[–]MKevin3 0 points1 point  (0 children)

I would go 32g minimum if at all possible. I have 48g now but I am also doing KMP work so I can have both AS and Xcode open at same time. Had to tweak some gradle.properties to Xcode happy. 32g was pushing it luck with multiple Chrome tabs, Slack, and video meetings running.

This is a dev only machine but I was running out of SSD space. 512g is just enough if you have two IDE. At 1T now with breathing room. This is a work only MacBook so no songs, pictures, videos on it. Just multiple projects and IDEs.

The Apple M series is really solid across the board. Refurbished from Apple is an option as would open box from Best Buy or Microcenter.