As time goes by, we already reached Xcode 13 beta 4 and it already seems a long time since WWDC 2021. With SwiftUI becoming more and more the de facto solution of choice for any new app development project, we were curious to see what is going on beyond all the amazing material created by the developer community to share their growing knowledge of SwiftUI, Combine or the new async/await concurrency features.
At the beginning of July, we stumbled upon this tweet:
And among the interesting apps appearing in the thread, we were particularly intrigued by a brand new app called Bakery by Jordi Bruin. It was not just written in SwiftUI, but it is a macOS app solving a niche - but at the same time crucial - issue for anyone developing apps for the Apple technology ecosystem: placeholder app icons. A problem that hits close to home, since when creating projects to write our articles and tutorials we need to come up with placeholder icons as well.
The app generates nice and appealing app icons for Xcode projects based on either SF symbols or emojis by adding solid or gradient background colors and badges. The icons can be added to the Xcode asset catalog via drag and drop to replace the sad-looking empty app icons on the home screen of any simulator or developer device.
What was also fascinating to watch is the speed at which this app came into existence. It started in early July and Jordi shared his progress on Twitter early on, making incremental improvements at very high speeds, literally pushing updates almost daily with vast improvements, making Bakery a well-evolved and mature app in just a few weeks.
We love it. And so we reached out to Jordi and talked a bit about his process, his Swift learning curve, and also how he started as a developer from his background as a designer. This is our interview with him.
Q: So Jordi, first: Congratulations on Bakery. It's really a great app, solving a real problem. Let's talk a bit about the journey behind the app. How did you get started with app development?
Jordi Bruin: I got into tech as a designer, UX, conceptual person 10 years ago. I worked at an agency and filled in a lot of different roles so I learned in a very broad way. After a few years, I got frustrated that I could not make my ideas a reality because I did not know how to program apps. So I bought a book on Objective-C the year before Swift came out and ended up not finishing it because I couldn’t understand the syntax that was used.
Then when Swift was announced I took an existing project (which is still active now @loulouplanner) that I had worked on (someone else programmed it) which was in Objective-C, and then I just started rewriting it file by file into Swift. Because I was working on something that I would want to use myself it was a lot easier to push through. Then over the years, I kept trying to make things but most of them never went anywhere.
Q: What made the difference? How did you get to where you are now?
Jordi: When SwiftUI came out I started playing around with it and then in March 2020 due to the pandemic I had some free time in which I started building @sooseeapp fully in SwiftUI. Partly as a learning experience, but also because it was so much easier and faster to make things come to life. In the last year, I’ve built out Soosee, which helps people with allergies by scanning ingredient labels and highlighting ingredients that they should avoid. After WWDC I started working on Navi, a SharePlay app that brings subtitles and real-time translation to FaceTime, and I needed to learn macOS development.
Q: And Bakery?
Jordi: Then a month later I had the idea for Bakery and I could take that knowledge from working on Navi to really quickly get a first version out. My approach with Bakery is to do a lot of small iterative updates so I don’t overwhelm myself with complicated features as I’m still learning a lot about developing for the Mac.
I hope that by sharing my progress openly, people will be more forgiving and supportive if they run into bugs or unexpected behavior and so far that’s definitely been the case.
Q: Can you share a bit about how Bakery works from a technical perspective?
Jordi: I built Bakery with a simple structure. Every feature in the app has its own directory where I place all the views and subviews related to that section. For generating the icons I have an ObservableObject ImageManager, where all the metadata around the icon is handled. That way I have one source of truth and I can call all my image generation from one place. I pass a reference to this Object onto the subviews for easy access, although I might be able to use EnvironmentObject for that in the future. I’ve just been bitten by that in the iOS 13 days for Soosee, where sometimes it wasn’t passed correctly so now I try to avoid it...
Q: Looks like the process you took with Bakery is working out very well and you are learning a lot and fast. Are there any resources you would recommend? Maybe also from a designer's perspective?
If you are curious about Bakery, try it out. We thing it provides a nice touch to any new Xcode project. For a deeper look behind the curtains, we recommend Jordi's Twitter feed. If you have any suggestions, we are sure he will appreciate any feedback and might even get in a rush to implement it. We also know that he is looking for support in localizing the app, so if that is something you are interested in, reach out to him.
We look forward to seeing where Bakery is going. Even though we picked Bakery for this article. there are also many other amazing SwiftUI apps out there that were created in recent weeks and months. We hope to have more time to explore them in the future.
It certainly shows that SwiftUI is empowering people more than ever to express their ingenuity and we can't wait to see what all of you create with Swift in the future.