
Roughly three weeks ago, I was done with the first version of Boxcoach — a tiny app that generates a boxing workout based on some form input.
I wrote it using Svelte. My first attempt at coding something using this exciting framework.
It ended up pretty much exactly how you would expect. All the JavaScript, HTML and CSS were in one file. It’s rather amusing, how such a micro app became such a large mess.
Having finished the v0.1 of the app and after attempting to use it during our workout, some glaring issues became apparent:
- There is no “keep awake” in safari.
- The app must come with its own timer.
- Showing punch number along side the text makes it harder to read.
So I thought — I should try making this as an iOS app. Native iOS app.
There was only one problem. I don’t know how to write iOS apps. I don’t know Objective-C or swift.
For years I had avoided native app development for fear of it being too complex.
I have tried every single possible “easy path”. From react native to flutter, to various app generation tools and compilers.
I would pick up some new tech, face some difficulty and give up.
I had this idea stuck stuck in my mind: I’m just not smart enough. I probably don’t have the time to figure this out. It’s probably too difficult.
And I was right. It was a self-fulfilling prophecy.
This time around things felt different. I am not afraid of difficulty anymore. Complexity and a steep learning curve? Bring it on.
I have a goal.
I may not have the exact route of how I get to it, but I know for a fact that it is possible. And that’s all I need. To know that there’s a chance.
The first few days were spent watching first steps in SwiftUI videos as well as reading up on basic language syntax and concepts.
I then moved onto basic tutorials that showcased simple navigations, buttons, cards. Then came Tic Tac Toe.
While swift and SwiftUI feel more complex and strict in some ways, the sanity of only working in a single environment makes up for the complexity.
Not having to juggle three languages — html, css, JavaScript and it’s various flavours and paradigms is beyond refreshing.
Being stuck in infinite package hell upgrade/downgrade loops is something that always gave me anxiety.
It’s strange to think that all these amazing tools that were made to improve and optimise the developer workflow and experience often end up achieving the opposite effect.
I would urge anyone with the slightest desire to learn iOS app development to just go ahead and try it. It’s much less scary than you may think.