Apple Vision Ready

    OnlineJobs app now works on Apple’s visionOS.

    VersionedSchema Protocol Updates

    After updating to Xcode 15 beta 7, I got a VersionedSchema error saying that 1 does not conform to protocol 'VersionedSchema' Previously, the variable versionIdentifier was of the type String. 1 static var versionIdentifier: String = "v1" On the latest Xcode 15 beta 7, versionIdentifier is now of the type Schema.Version. 1 static var versionIdentifier: Schema.Version = Schema.Version(1, 0, 0)

    Throwback Android Developer Google Group

    Out of the blue, I remember that I was in a Google Group community of Filipino Android developers back in 2011-ish. After some quick Googling, I found the group. This was in 2011? Wow. I am surprised the link is still alive, knowing Google’s history of shutting down things. Yeah, the post feels kinda lonely. There weren’t that many Android developers in my area back then. At this point in time I am not even entirely sure if I could make a living out of this profession.

    Read More

    Last.fm API

    I recently recovered my Last.fm account, which was one of the top music services before Spotify or streaming in general. It says my account has been around since 2010, thus the cringy username xthekingisdeadx. My profile picture and username still stay the same. I want to retrieve my Last.fm data, particularly from my top artists and albums I have listened to for the past week or month. So I could share it somewhere.

    Read More

    WWDC 2023

    I just realized that I have not written something or anything about Apple’s WWDC 2023. I was too busy catching up with the WWDC sessions and some fatherly stuff I have to deal with. Overall, I am impressed by the event and the news coming out of it. I just want to write down a couple of thoughts before I forget. Xcode 15 Xcode 15 is buggy as hell. Running an emulator or preview makes my machine overheat.

    Read More

    dSYM workaround in Xcode 14

    Starting with Xcode 14, Bitcode has been deprecated. So, in our team’s case, it is impossible to download dSYM files for debugging crash logs. If you are using Crashlytics or Bugsnag, this is a requirement to make sense of the received crash logs from iOS. But there is a workaround. Previously, all you have to do was go to App Store Connect and download the dSYMs directly from there. But that option is not available anymore.

    Read More

    Underwhelming Google I/O 2023

    After watching half of the Google I/O Keynote, I had to close the video because it was starting to bore me. There was no excitement for me, AI/ML is a topic I am not interested in. I took notes of the keynote while watching, and I just wanted to publish it here for keepsake purposes. Google IO 2023 Notes Keynote So many AI/ML keynotes and features. Not interested. Bard? Does not interest me.

    Read More

    SwiftUI Tap Anywhere

    Today I learned how to implement tap anywhere to dismiss the keyboard on SwiftUI. In your parent stack, either VStack or HStack, add the following code. 1 2 3 4 .contentShape(Rectangle()) .onTapGesture { UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil) } The most important thing to take note here is the contentShape modifier or tap gesture will not work.

    YouTube Coding

    3 days ago I uploaded on YouTube my coding in SwiftUI, working on a couple of simple bug fixes for my hobby project. My wife gave me this idea and also I remember I have some coding sessions in Loom from 2 years ago, where I did a coding demo for a client. And, looking back at those videos is really cool and nostalgic. So, I decided why not upload it on YouTube.

    Read More

    Xylophone App

    In roughly an hour or two, I created an iOS app for our son who loves playing his Xylophone. I came upon this old repo for inspiration and reference. This was still developed using Storyboard and UIKit. So, I set out to write my own using SwiftUI. I also borrowed their sound files. The owner of these files belongs to them. The code looks like this initially. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 // // PlayerView.

    Read More

    New MacBook Air M2

    My new Macbook came in today, from my sister in Houston. Thank you! Coming from Macbook Pro 2015 (won’t run the latest Ventura or Xcode 14.3 anymore), this is a huge leap for me. I just want to take note of the software and applications I initially installed for future reference. Applications Installed in order Firefox Dashlane Grammarly Xcode Android Studio Homebrew git Todoist iTerm2 Sublime Text 4 Fantastical

    Jetpack Compose Journey Part 1

    This will be my first time delving into Jetpack Compose for a rewrite of our existing app. I believe I have no time to study or do a full Google code lab for this one, due to the constraints of the timeline and deadline. So I will have to go head first and rely on my > 11 years of experience. Setup So with every new Android project, I created one.

    Read More

    My first contribution to Google/Android

    I just had my first GitHub contribution to Android/Google merged into their codebase. I have never thought of taking my free time to contribute to open source in my over > 11 YOE. 1 lawgimenez/agp-v7.4.1 It’s not much of a contribution though, it’s just an update to the latest Android Gradle plugin. But nevertheless, I contributed and I’m proud of myself.

    Leftover Android Studios

    Thanks to this Reddit post, I just found out that you could remove unused Android Studio cache or leftover versions. I saved around ~4GB of storage.

    Updating old Android codebase

    An old client of mine contacted me to fix some bugs and the tricky part was that I have to update an Android codebase that hasn’t been updated in 3 years. I have updated com.android.tools.build:gradle from v3.6.4 to v4.2.2. And from v4.2.2 to v7.3.1. This is how old the codebase is.

    BuildException Error

    Updated last night to the latest Android Studio Dolphin build but encountered this annoying build error from the JetBrains IDE. Invalidating cache and restarting seems to not work. Jetbrains seems to be clueless too. This bug has already taken much of my time. This is annoying. Edit: September 17 at 9:14PM It seems that the error went away after declining the “standalone script” option in Android Studio.

    Compiling iOS Project in GitHub Actions

    While setting up YAML with GitHub Actions, it seems the build failed. These are the steps I took to integrate GitHub Actions in our iOS project. It seems for CI/CD to work we have to create a Package.swift file in our project. Currently, we do it manually through Xcode’s Swift Package Manager. To create this Package.swift file, we need to run swift package init in the command line and it will create the following files.

    Read More

    My First Professional Android Project

    I found my first “professional” Android project while backing up data from my old laptop. I called it a “birthday reminder” and this project was the one I demoed to the company I sent my application to. Now, I am unsure if I got the gig because the Android team lead was amazed by the project I demoed or because I am the only applicant. Yes, I was the only applicant for the job interview.

    Read More

    Be Nice To Your Mobile Developers

    We need more wholesome reviews like the photo below. I received this notification this morning and I don’t care if it is a bot (at least somebody took the time to target and review) or a real person. As long as it is a positive review. Mobile developers don’t get a lot of positive reviews lately. It’s just either someone threatens you on a personal level or tells you to quit your career and job.

    Read More

    SwiftUI Journey Part 11: Passing parameters

    Right now I am still figuring out how to pass a parameter from one View to another. I read I need to use @Binding but don’t know what it is. Or what differs it from @State. Currently, I am still studying @Binding. All the tutorials and Apple documentation look good but they did not include what to do with the compile error in PreviewProvider. Well, it seems PreviewProvider is separate and you can pass static variables different from the View class.

    Read More

    SwiftUI Journey Part 10: Settings

    I can’t believe how easy it is to implement a settings page in SwiftUI. For the UI, I only need 37 lines. Of course, this implementation won’t be accepted by the programming gods. Why you may ask. This is implemented in a static way. What if you want to turn every Text() background to Color.yellow. Then you will have to add the modifier background to every Text() view. Let’s make it dynamic.

    Read More

    Flutter Development Reaction Part 1

    I spent majority of my mobile development career on native app development, mainly Kotlin and Swift. And this is my perspective on using Flutter for the first time. I have only seen small code snippets and that’s it. This is my first time logging into Flutter’s official site. I Googled Flutter. And first thing came up is Flutter - Build apps for any screen. And I have to double check, why .

    Read More

    Migrate Android build configuration from Groovy to Kotlin

    Here are the steps I did when I migrated our Android build to Kotlin. Long story short, the reasons for migration is the syntax highlighting and built-in support with Android Studio. I searched for all single quotes and replaced them with double quotes. Migrate to function invocations in Kotlin syntax. As you noticed the parenthesis. Rename file settings.gradle to settings.gradle.kts Inside settings.gradle.kts, refactor code from include ':app' rootProject.

    Read More

    Postmortem: ProGuard is annoying

    This morning I received several crash reports from last night's release. I wasn't able to replicate this crash on my debug environment. So this should be a production-only crash. The first thing that came to my mind while I read the crash report is that this is a Proguard issue. The crash was happening in this class import android.content.SharedPreferences import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider class OnlineJobsViewModelFactory(val sharedPreferences: SharedPreferences) : ViewModelProvider.Factory { override fun <T : ViewModel> create(modelClass: Class<T>): T { return modelClass.

    Read More

    UIKit Drawing Tutorial Fix

    I tried the tutorial from raywenderlich.com but the behavior was incorrect. The canvas or UIImageView seems to move after lifting my finger. It tried to run the official project from raywenderlich.com but it has the same strange behavior. Luckily I found a solution, you need to change this line inside touchesEnded function // from UIGraphicsBeginImageContext(mainImageView.frame.size) // change to UIGraphicsBeginImageContext(view.frame.size) And that's it.
Older Posts →