As an independent iOS developer, I’ve been publishing to the App Store since 2015.
Below are some notes on my currently-shipping apps, going over the technical details and discussing the process of making them. With each app listed below I served all roles, from design to coding, from configuring URL request headers to creating the App Store screenshots—all the miscellaneous tasks that go along with getting an app out the door.
Do you have an app idea you want to explore? Are you looking to add another pair of hands to your over-extended dev team? Or perhaps an entirely different thing of which I couldn't even dream? Regardless, reach out and let's see how I can help.
In Rotation
iOS & iPadOS
In Rotation is a "listen later" app. ("Like Instapaper for music," if you'll excuse the cliche.) I'm a heavy Apple Music user and I like to keep my music library well-curated. In Rotation serves as a kind of waiting room where you can audition records that friends have recommended before commiting. And, as a bonus, it can help you discover new music.
This has been an interesting project in that it spans a lot of different technologies, from an involved, user-managed record library that syncs over iCloud and supports features like tagging and notes, to in-app purchase and web API integrations.
- Music library stored using SwiftData and syncing via iCloud. Supports tagging, notes, sorting, filtering, archiving, customizable icons, and search.
- Users can start with a library of fifteen items, expandable via in-app purchase using StoreKit 2 and StoreKit for SwiftUI. Various purchasing scenarios were thoroughly tested and the limit needed to be factored in during development to ensure proper feature gating.
- An action extension allows adding items via the share sheet, leveraging SwiftUI within a UIHostingController to avoid redundant UIKit code.
- Multi-platform sharing is enabled via the use of the Odesli web API, aggregating links for various music streaming services.
- The "Explore" tab features a Tinder-style card swiping interface for album recommendations, ensuring smooth performance and animations.
Under Cover
iOS & iPadOS
Under Cover is an album cover guessing game for music nerds. Something to kill time while waiting for your friend to join you in line at a show. Or, something to pick up every now and then just to remind yourself of your incredible, unparalleled music knowledge.
I wanted to make a small-scale, fun, and modern SwiftUI app with a strong foundation upon which to build. I also wanted to challenge myself on how quickly I could execute. All told, I spent just over 90 hours on it, from creating a new Xcode project to publishing version 1.0 on the App Store. (Though, of course, there is much more work to be done to improve and expand it over time.)
- MusicKit-enabled search feature allows the user to sift through Apple Music playlists with live results. Playlist metadata is repurposed to create game categories. MusicKit used to guide playback of various category songs during gameplay.
- MVC design pattern with SwiftUI and SwiftData, using the Observation framework for controllers.
- The layout is built around a standard NavigationSplitView with custom UI elements like modified UINavigationBar fonts and a consistent ButtonStyle for List items and guessing options, providing a reliable foundation without sacrificing character.
- Features a favoriting system, allowing users to mark interesting albums along the way and return to them later to play/open/share.
Carpark
iOS
On the App Store since 2015, Carpark is my longest-running app and a sentimental favorite. Functionality-wise, it's simply a big button to mark your parking spot on a map. I made it when I was living next to Dodger Stadium and had to get creative when finding parking on game nights.
Carpark aspires to be a very much by-the-books SwiftUI app. No custom fonts or non-standard UI elements, etc. The small scale of the app makes it a great place to experiment and try out new iOS frameworks.
- The app, originally written in UIKit, underwent a complete rewrite in SwiftUI in 2023, removing all legacy UIKit code.
- It extensively uses MapKit, leveraging the latest MapKit for SwiftUI implementation released in 2023.
- The AppIntents framework powers the “Park Here” action, allowing users to set their parking spot in the background via Shortcuts and Siri integration.
- The app adopts strict concurrency in preparation for Swift 6.
- Location data is recorded as simple latitude and longitude Doubles, with the parking spot detail view displaying more descriptive information through reverse geocoding using CoreLocation.
-
Users can customize settings for map style, haptic feedback, theme colors, and warnings before setting a spot, all persisted via
@AppStorage
.
About Me
About Me
A lifelong Angelino, I currently live in beautiful Hollywood, CA.
During a previous career as a product photographer I developed an interest in programming and started teaching myself how to make software in my off time.
Since then I've worked in tech as a Service Desk Manager for a Los Angeles-based IT firm, then as a freelance web developer. All that time I've been shipping to the App Store as well and honing my abilities in iOS development. However, working as a solo dev can get a bit lonely! I'm currently looking to join a team that's passionate about Swift development and where I can work with and learn from talented folks.
Other Tech Interests
- As a freelance web developer, I've spent a lot of time working in Node.js and Express. For front-end, I favor vanilla HTML/CSS/JS as much as possible, though I use a subset of the Bootstrap framework's functionality as well, which I find to be great for things like simple, responsive positioning of elements.
- I'm a big fan of the open source blogging platform Ghost. It's modern, fast, built on Node.js, and easy to get up and running. The custom theme development process in particular is very straightforward and well thought out. I've set up multiple clients with self-hosted Ghost instances and custom themes, and I use it for my own blog as well.
Non-Tech Interests
- Music has always been a huge part of my life. I've played in many bands over the years and still enjoy writing and producing my own music in my off time on occasion. My preferred DAW is currently Logic, though I was a Pro Tools guy for yearsand even briefly (and mistakenly) thought I could be a Reaper guy. Guitar is my first and favorite instrument.
- I love movies. Of course I do, I live in beautiful Hollywood, CA where they literally won't let you apply for an apartment without a Letterboxd account. You can check out mine if you'd like to see some of my incredible opinions.
- I spend a truly unreasonable amount of time listening to podcasts. It's a medium I've been obsessed with since the days when I listened to them on an actual iPod. Current favorites are Blank Check with Griffin & David and The Doughboys. Currently on hiatus, I also have an occasional show about Pitchfork dot com, the music website called Best New Podcast.