Exploring Jetpack Compose

After last month’s adventures into SwiftUI with my little weather app, I thought it would be interesting to recreate the same project, but in Android’s upcoming version of a declarative UI framework, Jetpack Compose. I’m curious how it compares to SwiftUI and what the Android development experience is like in 2021. I’ve been developing on Apple’s platforms in some form since the early aughts. With the iPhone SDK in 2008 I took it from a side curiosity to my main career.

Continue Reading »

A Swift Time Capsule

A while back I got into an argument with a friend about the lifetime of code “now days”. He argued that code written in C and C++ was much more likely to continue working forever, needing fewer updates, and being generally more of an asset. My response was generally “code is a liability, not an asset”. We should strive to create good code, but too much changes in the industry year to year and you’ll eventually need to replace it with new tools and environments—at least for most consumer facing apps.

Continue Reading »

Patterns with Swift Concurrency in new APIs

I’ve watched a lot of this year’s WWDC sessions—like over 30 this weekend. This year just seemed to be really interesting and I’ve really enjoyed many of the videos. Also, I’m super excited about DocC and can’t wait to start building better documentation! One thing has been bugging me. After watching Meet async/await in Swift, Meet MusicKit for Swift and Meet StoreKit 2 sessions I started noticing an interesting difference in patterns in use with Swift Concurrency.

Continue Reading »

Cross Platform Thoughts

Cross Platform development for most mobile apps is just simply not worth it. Sure, there are great open source options like React Native and just plain C++ but you end up spending the same time trying to be clever and “share code” when you could have just built your product with all the platform has to offer. There seems to be a lot of realizations this year with Dropbox dropping their C++ components and last year Airbnb sunsetting React Native components. I’ve played this game before and while it was a great challenge, I would advise anyone not to do it for most cases.

Back in 2017 I joined the Highrise team as the Lead Mobile Engineer and one of the first decisions we needed to make was: what is the future of our game and how could we create it so that it could live on Android?

Continue Reading »

Debugging with Sound

Debugging is hard. You have to remember what you or someone else was trying to do while understanding what’s actually going on. I don’t remember where I heard it, but there is a saying that goes something like “Don’t write code at the peak of your understanding because debugging it requires 2 times the understanding…”. Sometimes it’s not that it’s hard it’s that there is just too much going on. For these cases, I’ve been using sound.

Continue Reading »

Calling Kotlin from C++

At Highrise we’ve been building the future of our platform in a way that supports Android. We’ve put together a stack that is pretty challenging but really fun to build. It’s based on a C++ core and platform specific projects in Swift (for iOS) and Kotlin (for Android) that uses that core. On Swift you need to have an Objective-C++ wrapper for Swift to call functionality in the C++ core, but it’s pretty straightforward and things like wrapping a block in an std::function works pretty well. Android however runs on the JVM and requires using JNI to communicate with C++. This took away the niceness of Kotlin lambdas for asynchronous completion away from us. Or did it?

Continue Reading »

→ Number Rush

Apparently I’m not the only one named “Josh Johnson” that has a problem with German numbers. Here is a web-based game by another Josh Johnson to help with your German number learning. It also uses React.js which is something I’ve been wanting to play with. You can see the code on Github.

→ Guide to Functional Reactive Programming

Realm, which posts amazing videos regularly, has just posted a Guide to Functional Reactive Programming. They discuss the why, the what, the how, and the who all while linking to some great videos. Definitely a nice resource if you haven’t looked into this. I’ve read a lot about it but I don’t think I’ve fully internalized this yet. This will definitely help.

Coding Weekend

This weekend I spent some time at the Ticketmaster DevJam in Durham. They are working on a public API with events, venues, and more that they’d like to get developers using. For me, it was a day long event with food and building a weird app with some friends.

Continue Reading »

→ Microsoft Acquires Xamarin

Interesting, and unsurprising, news today that Xamarin has been acquired by Microsoft. I’ve never used it directly to build apps but I did to some research into using their test cloud system (which is actually calabash-based, something I’ve worked a lot with and have written about before). I hear of a lot of people loving to be able to build iOS apps without learning Objective-C or Swift.

This gives Microsoft an interesting position as a vendor of an iOS SDK. It will be interesting to see what comes of this.