Jetpack Compose Lessons Learned

     

Over the past couple months I’ve had the opportunity to refactor large swaths of our app user interface from XML to jetpack compose. Throughout the process I’ve come to gain an appreciation for some of the sharp edges that jetpack compose still has as February 2024. My hope is that by reading this blog post you might avoid cutting yourself on the currently jagged APIs of compose, at least in the same places that I did.


2024 Resolutions

     

2023 proved to be quite the turbulent year. Of my three2023 new year’s resolutions, I accomplished two. Specifically, I completed my Starcraft Rust AI (you can read about it here) and successfully summited four new mountains, Mt Hood, Old Snowy, Broken Top, and Three Finger Jack. My goals for 2024 are below: Update my Worldwide Equipment Guide app to use the new Odin API Climb three new mountains. Complete Intermediate Climbing School (ICS) I made token updates to in 2022 Worldwide Equipment Guide app.


Holiday Season

     

It’s been a busy past few weeks. Between Thanksgiving, Christmas shopping, a new part-time contract, family birthdays, and annual updates to my personally published mobile apps, I’ve had my hands full. My regular day job responsibilities have only increased as well. One of my new responsibilities has been the conversion of legacy xml Android layouts to Jetpack Compose user interfaces. Over the course of this process I’ve really come to appreciate the declarative style of Jetpack Compose.


Leetcode Lessons Learned

     

As I’ve been working my way through Leetcode I’ve picked up a few new tricks. Some of these are fairly standard, like the sliding window technique for array analysis, but others are somewhat less intuitive. I gained a number of insights through experimentation, and these may be specific to the Kotlin compilers for Leetcode in particular. I figured they would still be worth mentioning in any case. One of the first things that surprised me as I started the Leetcode 75 Study Plan for Kotlin was how efficient StringBuilder was.


Real-World Applications of Leetcode

     

As I’ve been grinding through LeetCode problems I’ve been reminded of some of the real-world applications of the algorithms used during my past life as an Army officer. The “Call For Fire” (CFF) is one such example. A CFF is a radio request for artillery fire and is performed by a Forward Observer (FO) using a map, compass, protractor, binoculars with reticle pattern, and a target. Before contacting the artillery battery, the FO makes their best guess with regards to the location of the target on their map.