โ€”ยท7 min read

Rudrank's Dispatch: Spark.

It is past 2 AM, and I am writing this with a TestFlight build processing in the background. While I have been working pretty hard to sleep on time, and make my Oura ring happy to get that crown of a sleep score, I just did not want to let go of this sudden burst of motivation that I got to pen this bunch of words down, before the feeling files a radar and disappears into eternity.

I have not felt this way about an app in a long time.

Two years ago, almost to the week, I wrote a dispatch called Inspiration, Again. Apparently my inspiration runs on a two-year release cycle and you can consider this the changelog.

Living in the Terminal

For the past few months, I have been living almost entirely in the terminal.

It started with the App Store Connect CLI, and then it became a habit I could not stop: a CLI for Apple's Foundation Models framework, one for Feedback Assistant, one for evaluations, plus labs for Foundation Models and Core AI. It actually feels like if Apple shipped a framework, I shipped a command line interface for it.

I like that work because it is fast and scriptable, and I do not have to think much about what the icon of the CLI(s) should look like.

But somewhere in those months, I quietly lost the motivation to work on apps.

Every time I sat down to build one, I had no idea what to make. And the few ideas I did have ended up under one question: why would this need an app at all? This could be a CLI, that could be an agent skill, and everything else went into a pinned Codex chat before I could even open Xcode.

Waiting for June

So I did what every Apple developer does when they run out of ideas. I decided to wait for WWDC.

Surely the new APIs would hand me something to feed my shiny object syndrome. I was pinning my hopes on Apple announcing one framework that would make me want to build an app again. I flew to Cupertino, I met wonderful people, I hosted a room full of developers talking about AI, and I came back knowing pretty much everything that was announced.

And within weeks, I had shipped tools around Foundation Models and Core AI.

Tools again, still no app.

My Toxic Relationship with Bangalore

I could be pretty rich if I counted the number of times I have told my friends and acquaintances that I would never go back to Bangalore again, and somehow I end up there. Always. I think the dispatch from two years ago was also written in the cab when stuck in the shit traffic somewhere there.

One of the reasons I went to Bangalore last week was the post-WWDC community event, even though after a week in Cupertino, I already knew what was new. I went because I wanted to be in a room where people were excited about building things, hoping some of that excitement would rub off on me. That was the entire plan: show up and wait for a spark.

It worked.

Somewhere between the sessions, the new audio schema for App Intents came up. This year, Apple made it possible for audio apps to expose their playback properly to the system through app intents.

And a thought surfaced from somewhere deep in my brain: wait. I have a music app.

Had. Sort of.

2:37 AM

Back in 2023, I built a little app for Apple Music stations, a cute icon and an idea sitting on top of a codebase that aged like milk. I renamed it at least twice and committed to it zero times. The UI was embarrassing, the architecture was a clusterfuck mess of ObservableObjects and force unwraps, and roughly two years ago I decided I did not want to touch it anymore.

That night after the event, we went on a long drive to the Bengaluru Airport. An amazing experience of shouting our lungs out to the saddest songs known to humanity.

When I was back and freshened up, at 2:37 AM, I asked my coding agent, verbatim:

"in Developer/Apps is there any app called Wavyy or something that has a cute icon and uses MusicKit and is for stations? if not check GitHub under rudrankriyam"

I had to ask an agent to find my own app. That is how far I had drifted from it.

But I still remembered the cute icon. Two years of distance, and the first words were about how cute it was. The affection never left.

It found it. And then, over that night, the mess got cleaned out while I mostly watched. I asked for a hygiene audit and subagents fanned out across the project in parallel, ripping out the payments code I no longer wanted and moving the view models to @Observable, and by the time I looked up, the whole thing compiled against the Xcode 27 beta 2. The reason the app deserved to come back at all, the new audio app intents, went in the same week, so the stations can now plug directly into the system experience.

Presset

Today, I sat down to redesign some of the views.

I reworked the station detail screen, updated the typography and the spacing, fixed the iPad layout, and hunted down the animated artwork for stations that never had it. I would take a screenshot on my iPhone, paste it into the chat, describe what felt off, and review the fixes. Bug by bug, screen by screen, the app started to look like something I actually wanted to use more than Apple Music.

I also finally dealt with the name. The app has been Fussion and Wavyy and a few other things I refuse to admit publicly. The naming session with the agent was easily the least productive and enjoyable hour of the week, somewhere between "find something cool bro" and me realising every good name on earth is taken.

We landed on Presset. Stations, presets, press play. I like it. After almost three years, the app finally has a name I do not want to change.

Build 36 went to TestFlight tonight. The new station detail view looks so beautiful on my phone that I just sat there scrolling through the stations for a while, not testing anything, just looking at it.

That is the feeling I had been waiting for since June.

The Spark

I kept telling myself I had no app ideas, and that was never true. I had abandoned ones, buried under uninhabitable codebases and old decisions, priced out by friction.

For months I mixed up having no ideas with having no energy to climb over the mess to reach them, and those are two very different problems. The CLI work quietly solved the second one: the agents do the climbing now, and I just get to point.

A CLI is a tool, and I am proud of every one I shipped. But an app is different, with a cute icon on your home screen that plays music when you tap it; no terminal output has ever made me sit in the dark at 2 AM just looking at it.

Presset ships soon. I intend to keep the promise I made to myself in June: build, write, and ship. Quickly.

Hope you all find your own old folder to reopen this week! ๐Ÿ˜Š

Happy building!

Post Topics

Explore more in these categories:

Related Articles

Exploring ASC CLI: Faster iOS Subscriptions with CLI and RevenueCat MCP

Use ASC CLI to bootstrap the App Store Connect side of a subscription in one shot, then hand the result to RevenueCat MCP to wire up the entitlement, offering, package, and paywall, all from Cursor.