Dev Logs
Tuesday, August 19, 2025
My latest app, Nudge Nudge, is finally released! It has been a challenge to get here, working off and on for over 20 days, plus a ton of days long before I started this log. With some more time, I plan to do a bit more of a recap of what I’ve experienced publishing an app in the current, rather crazy, software market.
What has been the most interesting for me though is how much I’m still motivated to keep working on the app, but even starting to think about my next big app project. While this app hasn’t taken off, and who knows might never take off, it has felt like me releasing it was a catalyst for my own motivation. Over the years, like most software developers, I feel like I’ve ebbed and flowed on motivation when it comes to releasing products. I would start a lot of projects, but very, very rarely release them. Now though, it feels different and I feel more motivated to keep releasing products and seeing if any will stick in any semi-large way financially.
Continue reading →
Monday, August 11, 2025
I finally made it. I’ve sent the last TestFlight out to my beta testers, and everything seems to be working properly. The paywall had some last-minute tweaks it required to support dark mode. And everything on the App Store side of things is all squared away. I’m submitting the final initial release build to App Review tonight with the hopes of launching the app in the next day or two after approval.
During this time, though, I’m going to be working on all the marketing material I plan to send out to a handful of online news outlets to promote the app. I’m going to hold off on doing this until I know the paywall and everything works in production once the app is on the App Store. However, I feel like the hard work, and the work that usually is the most important initial, is getting these marketing materials all squared away and professional-looking.
Continue reading →
Friday, August 8, 2025
After fixing a handful of in-app purchase issues, I was able to get my app approved by App Review! I’m still curious how much actual testing they do of the app functions and the purchase flow. Although I would have to assume very little. Which means I’m going to spend a little more time to testing it and making sure everything still works. The last thing I want is for a new customer to try and subscribe to the app and for some reason it doesn’t work.
Continue reading →
Tuesday, August 5, 2025
As expected, my first submission to App Review was rejected. And of course, it mainly had to do with the privacy and terms links you have to put in so many different places to meet the requirements of the App Store. While I know this policy is in place to cover either Apple’s or my own rear, it just feels like a game of whack a mole of where you need to be putting everything.
I’m going to take tomorrow to make the changes. Thankfully, yesterday I got a few hours of work in and was able to quickly throw together an About screen with some basic information about myself, NSMug, and the App. Getting very close to submitting the app for the final time before its initial release.
Sunday, August 3, 2025
It has been a little while. The last week has been very enjoyable on a personal level, but I put aside a lot of my work to make it enjoyable. While I have taken breaks since I started this effort, this was one of the longest. Every day I tried to fit in a little bit of work, but usually life got in the way in the best way possible.
Now though I’m back on the road forward. Thankfully, just before I had to pause on all of my work I had sent out a beta to a few friends who really helped me polish what I had at the time. And to help stay on top of the little things that usually catch people up on their first submission of a subscription to the App Store, I submitted a test build to App Review this afternoon to make sure nothing on that end will prevent me from launching. I still have a few minor things to get ironed out, all of which I plan to do this upcoming week.
While being away from the project I did miss it a lot. Which is something I have experienced in the past. Even after the breaks and setbacks, every time I sit down to work on this project I still believe in it. My biggest fear is that I’m going to miss something on the subscription side of things, breaking it, and having a bad first impression for some people. My hope is that throughout this week I can finish testing the app, write a few little things, and then submit it for release.
Monday, July 28, 2025
No work today on the app or really any projects. 100% focused on myself and family for a much needed day of rest, fun, and celebration. That being said, I’m excited to get back into it tomorrow and make some more steady progress through the final stages.
Late yesterday I was able to send out the very first TestFlight beta to a couple of close friends who helped track down a handful of important issues with the in-app purchase support of the app. Most of it I fixed late last night, but tomorrow I’m going to sit down and try and make that whole workflow as bulletproof as possible.
Sunday, July 27, 2025
Skipped a day of actual coding recently, but I’ve been constantly thinking about the last big item I have before I can share the Beta. But thankfully, that added time sort of let me refocus my efforts and trim down what I was trying to do. This really helped me make big progress directly towards the finish line all within about a days worth of work. Which means thankfully I can start to share a TestFlight build to my close friends first before posting one to some of my socials to collect feedback.
I also made a small change to swap back to my MacBook Air as my primary developer machine. I was using my 16in Pro since it has so much more RAM than my Air that it usually runs Xcode much quicker without burning through my battery. The only problem is that the Pro is so heavy and so awkward to balance on my lap that it caused me not to reach for it when I had a spare moment or two over the past few days. Swapping has really helped me stay back on task and squeeze in as much development as I can.
Since I’m getting closer to submitting, I finally took most of the afternoon to build the marketing site for the app. I host my main site on Micro.blog’s premium plan, which lets me host an unlimited amount of single-page style websites on my main account. This is great since I can quickly build a mostly static site and not have to pay anything extra, and get to have it under its own domain.
Today was a lot of work, more so than most days, and I’m honestly surprised how much progress I was able to make across the board. Mount Doom is well within view at this point.
Thursday, July 24, 2025
It’s clear that while I may not have long stretches of hours to work and focus on a single coding milestone, small progress spread over multiple days adds up and is as beneficial as single long sessions. The last week of travel has presented a challenge to this experiment I’m running to finish my app on time. And today was the first day that I was able to squeeze in my experiment through multiple small sessions of real progress. One way I was able to accomplish this progress was by splitting the research and implementation into separate efforts.
A good chunk of my productivity time is dedicated to research. Researching new coding techniques, frameworks, or watching WWDC videos are usually my go-to when I’m sitting down in front of my computer. While I have been busy with travel and personal events, I’m taking a serious effort to use the small amount of time I have when I’m not in front of my computer to conduct this research. This, of course, is made possible by swapping out the time I spend endlessly scrolling on Instagram with dedicated time to watching a WWDC video or reading about a new coding technique that could help me. It takes a bit more effort than mindlessly scrolling social, and sometimes I still do set aside small chunks of time around 5-10 minutes to scroll without worry, but the rest of the time I’m focusing on fitting in the lengthy research part of my day.
Fitting in implementation time behind my computer, in Xcode, writing code is a bit trickier. It is something I’m still working on, but as of right now, my go-to is to just sit down whenever possible and write even a single function. Something small is usually enough to trigger my brain to get into a coding mindset, even if it is for 5 or 10 minutes. If time permits, that 5 or 10 minutes will grow to 30 or an hour in the best case. But even if it just is long enough to write a function or fix a small bug, it is progress no matter what.
These two small changes have helped me stay on track and finally start to see the end of this journey. For the first time in a long time, I’m finally close enough to start to see the orange glow of Mount Doom.
Wednesday, July 23, 2025
As I get back into a rhythm of working on my next app, I’m starting to realize just how little work I have left on the core functionality of the first version. I still have a good amount of testing, including a fair amount of testing for the in-app purchase flow. However, at this point, all I really have left is two big milestones that will take a while to implement and not be the easiest thing.
This hurdle, of course, makes me feel less excited about finishing the app since it is going to be a slightly less enjoyable challenge than the other parts of the app. My hope is to stay consistent and slowly start to break up the last two milestones to finally finish the app. Fingers crossed that I can get it done in the next few days so I can work on finalizing the in-app purchase and graphics of the app.
Tuesday, July 22, 2025
Day 8 didn’t see any work on my next app, but this morning I started to check off some of the outstanding todos I have for the app. It was an easy amount of progress thanks to me splitting up the work between implementing the feature in the data layer long before implementing it on UI layer.
With my travel mostly wrapped up I’m hoping to get back into a nice rhythm and still try and achieve my end of August goal of releasing the app.
Sunday, July 20, 2025
I’m quickly learning that the moment I throw any amount of travel into my schedule, the chances of me being able to work on projects drop to near zero. Overall, this isn’t a bad thing since a nice break from time to time is super helpful and can lead to new paths to take.
Thankfully, even though I didn’t make any progress yesterday due to a full day of travel, today I was able to add a small feature to the app. It wasn’t a lot, and honestly doesn’t move the needle any huge amount, but it is something. And most of what is outstanding on the app is pretty small things that will help make the app more usable for more people.
One interesting thing I did discover by skipping yesterday and jumping back in today was how much I miss this space I’ve carved out to work. Between the Xcode project and these blog posts, it has become this peaceful and almost secluded space to do work. It makes me want to return to the work more and more as time goes on since it is such a joy to sit down, code, write about it, and post it online.
Next to no one is reading these posts, but I think that is why I’m enjoying this process so much. I’m not doing any of this for likes, views, or comments. I’m doing all of this for myself and enjoying the entire journey.
Friday, July 18, 2025
I made just a little amount of progress today towards improving the condensed mode of the app. However, I ran into the same issue I’ve been having, not with the app but with where I’m storing the source code.
For the last year or so, I have a pretty simple code storage stack of: iCloud Drive → GitHub. I don’t just use Git alone since I have two MacBooks that I alternate using depending on where I am or if I’m traveling. And I’ve been traveling before, having forgotten to push my latest changes to GitHub, meaning I couldn’t work on my projects. To solve this, I just keep the source code in my iCloud Drive so that the uncommitted changes can be synced across all my devices without having to worry about Git.
For the last year of using the flow, I haven’t had a single problem. In the last week, however, I have had this nagging issue where at some point, Xcode crashes out, and it seems to cause iCloud to go into a weird state where it keeps saying it is no longer connected. The other odd thing iCloud does is hide, or possibly remove, all my other iCloud Drive folders from the Finder. So all my folders for iCloud apps, such as Pages or Keynote, are completely gone. However, they start to pop back if I launch one of the applications that uses iCloud Drive.
This issue is becoming more and more of a headache, but more importantly, a source of fear. One time this happened, I did manage to lose some code changes since even though I was saving the file in Xcode, the actual file couldn’t be saved to iCloud Drive. While I’m still not 100% sure what my next solution to this would be, since I’m not the biggest fan of Dropbox, I’m hoping that this is some weird bug in either macOS or Xcode that will maybe get fixed in the future.
Thursday, July 17, 2025
Getting behind Xcode was pretty hard today, but I selected what I thought was a pretty straightforward task to accomplish. About an hour later, I was able to get it completed and implemented a new layer of customization for the app. However, this was made possible by a great Swift Package called MCEmojiPicker.
This package allows you to easily show a fairly simple emoji picker without much overhead. It fully supports UIKit and, most importantly, SwiftUI. The package really shines with SwiftUI thanks to its use of bindings, which makes handling the selection a breeze. Packages like this are really great in helping you not reinvent the wheel for every little feature of your app.
Even though the past two days haven’t been the most productive with checking things off of my list of tasks before launch, I’m still glad I’m making forward progress. Hopefully, keeping up this pace will help me get across the finish line. Which makes me start to wonder when exactly that finish line should be set, as I don’t really have a natural deadline for the app. My initial thought is to aim for an end of August to launch, but shoot for much sooner to help get the app out the door and collecting feedback beyond my small selection of beta testers.
Wednesday, July 16, 2025
Today is a travel day for me, so I didn’t expect to get a whole lot done on the app. To my surprise, though, I was able to quickly hammer out the app’s settings view. I really want this app to fit into each customer’s workflow so that using the app doesn’t have a ton of friction. The whole point is to allow you to get in and out of the app as fast as possible, with most of the value of the app coming from customized notifications.
I’m enabling a lot of default customization so that the large majority of the app can be tweaked. I use and have tried so many apps, especially productivity apps, where I just want to make a small change to the creation of, say, a note, but the app has almost no settings options. And thankfully, with the help of SwiftUI and the AppStorage property wrapper, adding settings is incredibly easy.
While I didn’t move the needle a ton on the app today, I’m glad I was able to get some portion of it worked on and can keep up my streak of working on it daily.
Tuesday, July 15, 2025
The first official day of work on the app went super well. I was able to make two big steps forward: adding an icon and integrating RevenueCat for In-App Purchase support.
While I’m not worrying too much about iOS 26 for this app right now, mainly because a lot of my default controls and such are all SwiftUI. However, I did tinker with using Apple’s new Icon Composer to help make a simple app icon. It really shocked me that with just basic PNGs of different shapes, the default settings of Icon Composer really can create a unique-looking icon without a ton of graphic design work. Sure, it won’t win any design awards, but in a pinch and for indie developers, I think it is going to make designing iOS/Mac OS 26 icons much easier and help keep everything pretty consistent.
I’ve made a lot of apps over the years, and when it came to doing all the rigamarole required to implement In-App purchases properly, I always felt just overwhelmed. Hearing both John and Casey from ATP talk about the tough times they had fully integrating StoreKit into their apps really just made me feel like it was easier to either offer my apps for free or a one-time fee, even though the latter has fallen out of favor for most iOS customers.
Instead, I finally used the long-time sponsor of Core Intuition, RevenueCat, to help add In-App purchase support. This entire process went much smoother than I had expected, and I feel like it has helped me create a better paywall experience for my potential customers. Some people might feel that RevenueCat’s monthly fee of 1% for any revenue over $2,500 is too much for “just” being a wrapper around StoreKit. Now having integrated with their service, I have to say it is well worth the fees. Not only is so much of the store process abstracted away, their online editor to build the paywall is super solid and a great feature!
Important Note! This post is not sponsored by RevenueCat in any way!
Monday, July 14, 2025
After two months of wandering, I’m finally ready to get out of the woods. I’ve been working on my first iOS app in a while, and my whole motivation for the app comes from me wanting to finally do all the things I never could when I had a full-time job. And while I’m still looking for a full-time job, applying is just as awful as you hear about, I want to be sure I utilize the small amount of freedom I now have by completing the things I’ve always wanted to accomplish. One of the biggest things I wanted to accomplish after I left my previous job was to publish a new iOS app to help people stay focused on their hobbies.
To do that successfully, I want to start posting daily about my progress towards accomplishing that goal. Some days it is going to be very short since I maybe didn’t do a whole lot of work on my app. However, my hope is that by posting daily I will stay on top of the project and keep it moving towards the finish line.
A big inspiration for me to do daily logs is David Smith’s amazing Design Diary series he is writing as he works through redesigning his apps for iOS 26. The second inspiration was Brent Simmon’s Vesper Sync Diary from 2013/2014 which I had followed at the time religiously and loved every little update. I think it is important to share progress on large scale-projects publicly to not only record them for others to possibly learn from, but to keep a trail of the hard work you have put into your own projects.
The final big reason I want to do this is to get back to posting regularly to my Micro.blog site. Manton’s book and podcast Core Intuition were a huge inspiration for me to finally start to use Micro.blog and join in the community of bloggers trying to reclaim a small portion of the internet that the big social media companies have stolen. As I’ve started to post more on TikTok and other social media platforms, I just get the constant feeling that I’m missing out on contributing that same sort of content on more open and freely available avenues.
Today is day 1 of hopefully many more days!
A quick note: I’m hoping to give each day some sort of unique title, possibly Lord of the Rings inspired…but let’s see how long I manage to keep to this!