100 karma · joined March 25, 2020
Its worked out very well so far, but I'm working with time series that adds a new set of data every 5 minutes so I need the "on the fly" approach. After some heavy optimization it's become quite fast and often the generated tiles are returned before the base map layer is.
The upside is that it works with any map system that supports raster tiles, so any platform really.
Right now I rely on nim bindings for GDNative so it might be awhile before I make the change over, unless I decide to port my code to C++ or update the bindings myself.
I still rely on GDNative for really performance critical systems though.
SwiftUI has it's issues and one is platform support. If you want to support anything before iOS 13 (even that has limited support) then you are out of luck. The only SwiftUI I have shipped is for WidgetKit and WatchOS, both being somewhat forced upon you.
While it can be cumbersome to do simple things in SwiftUI that were easy to do in UIKit, I haven't found too many bugs. Most issues I have run into are on the Xcode side.
If you work with any Apple platform it is worth pursuing. If you want to just learn and use Swift it does have decent support on Linux thanks to being able to bind with C libraries. Windows support is there, but is very much in its infancy.
If you can find a language that you actually like to work in then why not use it on other platforms?
The dependencies really come down to the Apple frameworks. Ditch those and it's no different than any other general purpose language.
Nice job embedding Python in Swift. I haven't done Python, but Wren and Gravity were pretty challenging to get working right. I was going to use a scripting layer for the UI, but eventually came up with a solution that allows for Swift to be used. I sort of mimic the system Apple uses for Playgrounds/Live Preview in Xcode.
You can find some info by searching, there has been a few attempts to get it running on Android. Also just searching around github will net some other attempts.
The foundation dependency is the biggest problem. You can check out https://github.com/apple/swift-corelibs-foundation which gets rid of the objc runtime dependency for other platforms, though you will find yourself writing implementations for each eventually.
I would say if you are going to stay with just Android/iOS to look into maybe moving to Kotlin or C for your common layer and then call it from Swift. Kotlin multi-platform also has been improving recently.
EDIT: Also look at the Swift github, there are some docs about different platforms. https://github.com/apple/swift/blob/main/docs/Android.md
In theory any C based UI libs that support those platforms should work as long as they can be called from Swift.
If you ditch Foundation and rely on C libs you are able to use it pretty much anywhere.
I think the grind and knowledge gained in multiple sectors was worth it, but it was a long road. I've been programming on and off my whole life so I think it really depends on the person, but not having any degree it is doable. Would I do it differently after looking back? Absolutely, but I doubt I would get a CS degree.
Moral of the story, if you want it bad enough and go out there and make it happen, you can find a place in this industry with a high school education. Just demonstrate knowledge and keep on learning.