Last year at Apple’s World Wide Developer Conference (WWDC 2024), I watched a presentation on a new feature built into SwiftUI for creating mesh gradients on macOS 15+ and iOS/iPadOS 18+. I thought to myself, “That’s pretty cool! I’d like to play around with that a bit one day. I bet it would be great for making some impressive looking wallpaper designs for my iMac, iPhone, and iPad”. Fast forward to the start of January 2025 and I was trying to get back into programming after the holiday break and looking for something fun and completely different from anything I’ve ever done before to cheer me up in light of recent news. I also wanted to update the wallpaper on my new Apple devices because the design I was using was starting to feel a bit old and stale.
The idea started out rather simple. I just wanted to see if I could understand the new syntax and see what results I could get out of it. I hard-coded in some values and soon I had a couple of very nice looking gradients I could take screenshots of and that proved to me that this feature was every bit as great as I thought it would be when I saw Apple’s presentation. But endlessly typing in new values wasn’t all that fun or conducive to creativity and experimentation. I found myself wanting to create an interface to interact with the various parameters. It was a bit daunting at first because this project was so unlike anything I had ever done but that trepedation turned to joy rather quickly.
The first moment came when I was trying to figure out how to generate the grid of gradient control points. I had a general idea of what I might need to do and started to type just a few characters of code without really having a clue about the specifics. And then my new M4 iMac (replacing my last-gen Intel iMac) and the latest Xcode provided my first practical experience with Apple Intelligence (AI). It suggested the entire remainder of the code. I sat there somewhat dumbfounded for a moment just looking at the code suggestion. I actually understood what the code was doing (amazing in itself) and it appeared correct but as Paul Hudson demonstrated about a year ago with a video about AI writing code, sometimes the results are not quite fully there and despite a year of vast improvements in the field, it indeed got something wrong. But the syntax and structure was sound and I was able to figure out the error and fix it. It saved me time and I’m counting that as a win. AI continued to make suggestions as I worked on this project and sometimes they were useful shortcuts that filled in the code I was about to type anyway, and sometimes the suggestions were not remotely what I required and got a bit annoying. This will only get better over time.
Another joy throughout this project was finally getting a chance to read the updated SwiftU materials from Paul Hudson, Mark Moeykens, and Sarah Reichelt (thanks for all the work you do on keeping things up-to-date) and my having the freedom to discover all of the new ways of doing things in SwiftUI. While I love working on my Finance and iKeeper apps, they still require a minimum version of macOS 12+ and iOS/iPadOS 15+ which precludes me from taking advantage of some of the great advances that Apple has put into SwiftUI and even when I do eventually bump that up, it will only be a single major version update so it was fun to not have to worry about such limitations with this project.
I also made the switch from Twitter to Bluesky at the end of last year and was posting about my progress on this fun project and it was so amazing to meet other SwiftUI developers, make some new friends along the way, and be inspired by their journey and learn some new stuff from them too. Reminds me of how Twitter used to be when I first joined.
There were a lot of new puzzles to solve as I worked through this project. I learned a lot and I’m already thinking over the implications of some of this for the future. Before I knew it, here it is February already (when did that happen?) and, oops, I made a brand new app unlike any I’ve ever made before. Are there more features I can think of to add? Sure. But I’m pretty happy with where things are at the moment and decided to release my new app.
Welcome to Gradiance! A fun and simple way to design gradient wallpapers for macOS, iOS, and iPadOS. Where the entire screen becomes your canvas and the compact controls can be moved around on top of it or quickly hidden out of the way and brought back just as easily right where you left off. Where you can easily set up a grid of gradient control points, select them, change their color and opacity, explore the fun interactions as you move them around, and export your masterpiece to use as a wallpaper on your device.
I could have explored adding in a watermark, limiting features, making the app free and then charging a fee for in-app purchases to remove the watermark or enable features. Adding in new paid features over time or even charging a subscription fee. This app would certainly lend itself to that approach, but that just isn’t me. I’d rather spend my time working on useful features and improvements than all of that. So I decided to release Gradiance today at an affordable one-time price of $1.99 USD. I hope you will consider purchasing it and tell all of your friends about it. I would greatly appreciate your support and it would help as there are several other features and improvements I would like to explore in the future.
This app is a lot of fun to use. I’ve been enjoying it so much, I even came up with new gradient banners for my other apps along the way. I hope you enjoy it too. If you have any questions or suggestions, your feedback is always welcome.
I am continuing with my experiments on new and improved features for my Finance and iKeeper apps. In the meantime, I have just submitted iOS & iPadOS app updates to Apple for Finance 1.0.3 and iKeeper 1.0.8 that add support for the new dark and tinted icons in iOS / iPadOS 18+.
As with my music, if you know anyone with a Mac, iPad, iPhone, or iPod touch that could use my apps, please let them know where to find them either through my website or directly on the App Store. It is greatly appreciated.
While working on my apps, I often take breaks from writing code or working through the user interface design and I wander over to my Yamaha PSR-S770 keyboard and play some original instrumental pop music (in an AꓭBA / Benny Andersson inspired style). Sometimes I come up with new song ideas, other times I play some of my older songs. I’ve been doing this for a long time and last year I reached my 100th original song! It is a very enjoyable hobby. I have tried to record my music to share with others as multi-track songs with a variety of instrument sounds in various ways through the years and never was quite satisfied with how the recordings turned out.
Last year I released my new album: “Journey” on SoundCloud with 10 brand new instrumental songs using some new recording and mixing techniques. It includes “Wonderful Memories”, “Journey”, “At The Fair”, “When I Think Of You”, “All My Love”, “The Story Has Only Begun”, “Standing In The Rain”, “Heartbreak”, “Lonely Nights”, and (my 100th song) “Give It My All”! I was so happy with how they sounded that I also went back and remastered, remixed, and re-recorded my 2020 and 2021 songs: “When This Is Over”, “Nowhere To Run”, “Autumn Breeze”, “Winter Night”, and “Solitude” using the new techniques. I also decided to finally launch a new Music section right here on my website to help people discover my songs. I hope you have been enjoying them.
This summer I dragged my Yamaha PSR-S770 keyboard into my office, connected it up to my iMac and fired up GarageBand to work on my 2019 album: “Wake Me Up” which includes 8 instrumental songs: “Wake Me Up”, “All The Time”, “Send My Love To You”, “Yesterday”, “Once Upon A Time”, “Long Ago”, “The Way To My Heart” and “Dreamland”. They came out so well that I decided to keep going on this project and also remastered, remixed, and re-recorded my 2018 album “Ancient History” which includes 10 instrumental songs: “Ancient History”, “After All This Time”, “Play That Song Again”, “Still In Love With You”, “Happily Ever After All”, “In The Blink Of An Eye”, “Falling Rain”, “Under The Harvest Moon”, “As Another Day Goes By” and “Through All The Years”.
I’m happy to announce that all 18 songs from the newly remastered 2018 and 2019 albums are now available joining the 2023 album and 2021 and 2020 singles for a total of 33 songs (a little over 2 hours of music). This has been such a fun project and I really hope that you enjoy listening to the songs as much as I have enjoyed working on them. I hope to continue to go back and do this with all of my previous albums and singles.
A huge thank you to everyone around the globe who has taken the time to listen to my music during the new releases. From the United States to Egypt, to Vietnam, to the Netherlands, to Saudi Arabia, to Brazil, to Monaco, to France, to Micronesia, to Guam, to Finland, to the United Kingdom, to Germany, to Japan, to Mongolia, to Qatar, to Malaysia, to Sweden, to South Korea, to Australia, to the United Arab Emirates, to Ireland, to Switzerland, and to Poland (I think that is all of the countries in the list so far - sorry if I missed anyone). As of this writing, over 5,000 plays and 76 likes. It might not seem like much, but it means the world to me.
As always, it is your support, likes on SoundCloud, and encouragement that keeps me going. If you enjoy my music and can afford to, please consider hitting the Support button and sending any amount you can via PayPal (no amount is too large or small) and please continue to share the link to my songs with anyone you know who might also enjoy them. Every bit would help and would be greatly appreciated and may help me work on the remaining songs sooner (not to mention that it would also be nice to pay bills, upgrade equipment, etc.).