Dev Diary - October 2023
As mentioned last month, this month has been entirely focus on learning iOS, Swift, and SwiftUI. I won't spend too long talking about specifics in this article as there isn't too much to glean from my work following tutorials and doing some personal exploration. I'll hit my overall key learnings and wrap up with an update on plans for November. Before that, I do want to shout out the course I've been following which is the awesome 100 Days of SwiftUI created by Paul Hudson. The course is laser focused on getting you working on real code in reasonable scenarios, not overly contrived or trivial examples. I've been having a ton of fun and have definitely been learning a lot.
Key Learnings #
- Interface Extension Methods - Writing extensions on Swift "Protocols" (equivalent to Kotlin Interfaces) is a very common pattern, and one I've never thought much about despite having done it in Kotlin already (hello
Listextensions!). I'll be on the lookout for opportunities to try this more on Android.
- Kotlin Expression Statements are Amazing - Writing a lot of Swift made me realize how streamlined and productive
whenexpressions are in Kotlin. They are sorely missed when writing Swift code.
- Brush Background as Modifier - On a work project, we had a layer-list with an image and gradient that needed converted to work in Compose (spoiler: you can't do that 1-1). What you can do, is define a
Modifierextension with multiple background values stacked together. So far this has made for a very terse but readable syntax without the need for a dedicated background component.
- iOS is Very Tied to System Libraries - It was a system shock how integrated the Apple libraries are on the platform. I'm so used to Android's decoupled nature, even if the Jetpack libraries dominate most modern Android projects. I'm still thinking about how to separate concerns on the platform, but I don't think I have all the tools at my disposal yet.
- Topic -> Guided Project -> Solo Project - This is the basic structure of 100 Days of SwiftUI and it has been incredibly easy to follow while still pushing me to learn. I will be looking for coursework with this structure in the future.
What's Next #
My goal for next month is to finish up the 100 Days of SwiftUI course some time before Thanksgiving. Due to my familiarity with programming and not wanting to belabor going through the course, I've been doing multiple lessons per day. If you are a novice, I would absolutely not recommend this approach, but if you have experience, I've found the workload manageable. After that, I want to use my new knowledge ASAP. At the least, I plan to rebuild the Bible Tracker app for iOS, which I may even start sooner as I think I have most all of the knowledge I need already. After that I don't have a plan for my next project, but I think it will be the stretching/relaxation app. I'll start back on Android since that code is started, but I'm also excited by the prospect of getting something working for iOS.
This month has been an "input" month instead of an "output" month, and I think that is something important to acknowledge. Continuous learning is key as a software developer and that means some times you produce less in a given period to acquire the skill to produce more in the future. Before I end, I do want to give a quick sneak peak about next month for anyone reading this. I'm a strong believer in functional reactive style programming, and so for November I'll be running a set of articles on Kotlin Flows for "Flowvember". I hope they are helpful and informative! Until next time, thanks!
Did you find this content helpful?
Please share this post and be sure to subscribe to the RSS feed to be notified of all future articles!
Want to go above and beyond? Help me out at one of the services below, it goes a long way in helping run this site. Thank you in advance!