Monarch Caterpillar

Black and yellow monarch caterpillar on the bottom of a milkweed leaf
Black and yellow monarch caterpillar on the bottom of a milkweed leaf

I planted a couple of milkweed flowers this year, and am thrilled to report that there are several caterpillars munching away on the leaves. Looking forward to seeing Monarch butterflies soon!

A Simple Tip for developers writing both Kotlin & Swift

In your day to day programming, do you jump back and forth between writing Kotlin and Swift code as I do? You’ve also probably noticed that you develop muscle memory as you type the keywords. The two languages are quite similar and this lets me be quite productive in both. Yet, there is one set of keywords in particular that gets me every time: Kotlin’s val vs Swift’s let. I often end up typing let for Kotlin code, or val for Swift code.

Continue reading “A Simple Tip for developers writing both Kotlin & Swift”

‘lateinit’ modifier is not allowed on properties of a type with nullable

I was developing an abstract & generic base class where the generic parameter defines the type of an abstract field. This field would be initialized by inherited classes, so I applied the 'lateinit' modifier to it which caused an interesting error: 'lateinit' modifier is not allowed on properties of a type with nullable 

Continue reading “‘lateinit’ modifier is not allowed on properties of a type with nullable”

Tracking install sources for Android apps

Have you ever wanted to have a better idea of what’s the best source of your app installs? There’s information around the web on how to do it, but spread out over various sites, so I decided to write this post to consolidate the information.

Starting with Android 1.6, the Android Market’s emits a broadcast Intent named whenever certain parameters are added to the market url. Note that web version of the Market also passes these parameters to your devices upon install. Since the parameters need to follow the Google Analytics referral link format, Google provides a simple tool for generating these urls, or you could use a copy of my shared Google spreadsheet that I use to keep track of all my campaigns. Here’s a description for the important parameters:

Continue reading “Tracking install sources for Android apps”

“Incorrect AVA format” when creating a signing key


Have you ever run into the error “Incorrect AVA format” when trying to sign an Android APK with a new key? It turns out this useless error more than likely means that you have used some illegal character in the signing data. In my case, I had used a comma in the company name which isn’t allowed for some reason. Just remove any extra characters and you should be good to go!

EDIT: Great comment below from Adam M Dutko:

Put a \ before the commas and it will work. Here is an example: OU=Test Company\, LLC

Adding formatted HTML text to your Android app


To help make our Android applications look even more professional, we can include HTML formatted text and display it in a WebView. Here’s the simplest way I’ve found to have local HTML, image and style files and display them. This is the same process I use to display help in Grandma Jong.

First, I’ve stored all my files in a subfolder of assets. This will make it easier to load the HTML, and via some built-in functionality in Android, it will load all assets from the same folder as well. Here’s a screenshot of the assets folder:

Continue reading “Adding formatted HTML text to your Android app”