Decisions
This has been a difficult post to write. First, a bit of backstory.
I’ve been developing on Apple products ever since I got an Apple ][+. At that point, there were a lot of programming languages and options. There was everything from APL to MUMPS to Pascal and 6502. Then, MPW came out and we moved into the world of Quartz and the Toolbox. But I still had freedom to choose tools and how and what to develop. I was allowed to use everything from APL to Ruby to FORTH.
Then came XCode and Apple decided that Objective C was the way to go. Now, we are in the world of Swift and SwiftUI. And although it’s possible to use ObjectiveC and a couple of other things, Apple has walled-off the developer to what Apple wants.
That’s fine. Swift and SwiftUI are cool, even though the language design has moved from easy to learn to obfuscated and requiring a PhD in math or CS.
What isn’t cool, for me , is XCode. In ObjectiveC times XCode was cumbersome, but useable. Now, I can brew my morning coffee, check email, and do a dozen other things in the literal minutes to hours it takes to load, attach to a device, and compile. That is, when it does. More often than not it hangs on “loading symbols”. And this is on the latest MacBookPro M3.
I can deal with the slow times, frustrating as they are. XCode, however is a megolithic application I don’t use most of the functionality and settings. The editor, previews, and other features are all in the same distribution package. Now, it takes a looooong time to download and install. This over high-speed internet. Yes, they have split off simulators and a few other things.
I’ve been taught, through experience and other ways, that one should never create a monolithic application, just because of the things I’ve mentioned.
Next up, error reporting. Error messages in XCode are for the benefit for the Apple developers workin on XCode, not end-user developers. Messages are obtuse, obscure, confusing, and unhelpful.
Finally, Apple’s developer tools and software release cycle is insanity. By the time I learn a new feature, or the changes to the wonky syntax, Apple has released a new iteration. I’m always playing catch-up.
So, back to the point of this post. I’ve decided to drop XCode for developing on Apple. No, I’m not dropping Apple products, just their toolchain and languages. I now develop for myself, and don’t post to the AppStore. That’s another story. I’m not looking to create an 100% error-free app, althought that would be nice. I just want to take an idea and create an app I can use as quickly as possible. That’s not possible with XCode, for me. I want speed in compilation and iteration, ease of development, and I no longer want to play catch-up with Apple’s paradigm. I want a stable, mature language.
So, I’m dropping XCode and Swift/SwiftUI. What am I going to use? I’m exploring Xojo for Mac and iOS work. It’s sometihing I used way back when but dropped it in preference to the early version of XCode. I guess what goes around, comes around. I’m also moving my apps to be web-based on my own internal server using Python. Python is quick, easy, and fun. XCode, Swift and SwiftUI no longer are.
I’ll still try to keep up with XCode and Swift/UI, but I won’t be “chasing the dream”. I’m still a fan of Apple and Apple products. I just don’t like where they’ve taken development.
Code up!
#writing/blog