stuff tagged with "lunara"
Fine, I'll make my own music player!
The most compelling use case I see for agentic programming is to enable home-cooked software on a scale like never before. As part of my burnout recovery, I noticed that I've been searching for years for a home-cooked meal I can sink my teeth into and build for myself.
I recently beta tested James Reeves' Spite. It's an exceptional, opinionated music player, targeted to fit James' vision for how he consumes music.
As I was playing around with it, it dawned on me: I could do this.
I have opinions. I have $20 per month. I have a decade of iOS development experience.
So I've decided I'm going to see how far I can push an agent to help me brew up a custom music player.
I'm calling it Lunara.
My requirements
I currently use Plexamp to achieve about 90% of what I would like to do with my music listening... but it's that 10% that I'm going to push on to see how weird I can make this app.
I want to build this in public.
I want to mostly use agentic tools. I'll drop into Xcode and help handle some of the quirks that LLMs can't handle yet, but for the most part, I'm gonna be hands off of the code itself. I will be more concerned about writing clear requirements up front, reviewing the unit tests that the agents will write, and dogfood the hell out of it.
The app will evolve to match my specific listening habits. As I outline in the project readme, I use Plex to manage my library. I've spent an embarrassing amount of time pruning my library, adding tags and high res album art and whatnot. I don't want to replace it; I want a new front end that integrates deeply with it.
I see my digital music garden as a large pool. I like to jump into my library and wade around, often hitting "shuffle" on my thousands of songs until something matches my current mood.
I never plan on releasing this thing to the App Store, by the way. If you want, you can absolutely download the repo and run it against your own Plex library. In fact, one of the dopest things that the agents have done so far is incorporate Plex's PIN login approach. I have a feeling I'll say this a lot, but I absolutely would not have gone that far had I been forced to write all of this myself.
Current progress
I've been obsessed with this idea for the last 24 hours. And in just 24 hours, I've been truly unbelievable progress.
Using gpt-5.2-codex-medium with the Codex app for macOS (since it gives me 2x tokens lol), here are a couple screenshots of what I've built:
This is the main page so far. It's a grid of album art. It's not very impressive, except for the fact that it's loading dynamically from an authenticated Plex session and none of this existed 24 hours ago.

Here's the "album details" page. Again, nothing revolutionary yet... but isn't it cool?

It also actually plays music from the library! Behold: Taco Grande in all it's glory.

Next steps
I stayed up until midnight last night getting this far, and I'm afraid I'll get sucked into a deeper rabbit hole if I don't sign off for now. So here's my next steps:
- Offline media manager. I don't want to be streaming music across the internet if I can help it. I have a beefy drive on my phone, might as well use it.
- Queue manager. I want there to be a queue, should be able to insert albums into the bottom of the queue as needed.
- Now playing screen. I will mostly get close to what Plexamp does for a v1 but just need something in place for now.
- Caching artwork and library metadata. Right now, the app refreshes the library every time I launch the app. I don't update it that often, so I'd like it to do a one-time full sync of everything and then cache that.
- Hand-in-hand with that feature, I want to get a selective sync engine going which periodically detects and refreshes the local cache when there are changes remotely.
- Incorporate with the lock screen's now playing + remote control functionality.
- Get a basic settings screen in place.
Once that's done, I'm going to make this app my daily driver and go from there.
Okay if I don't just go to bed now I'll stay up for another six hours doing this. I haven't had this much fun on a computer in years. Even while writing this blog post I made some tweaks, like adding the track artist to its listing in the show album screen if it differs from the album artist.

We mourn our craft
đź”— a linked post to
nolanlawson.com »
—
originally shared here on
We’ll miss the feeling of holding code in our hands and molding it like clay in the caress of a master sculptor. We’ll miss the sleepless wrangling of some odd bug that eventually relents to the debugger at 2 AM. We’ll miss creating something we feel proud of, something true and right and good. We’ll miss the satisfaction of the artist’s signature at the bottom of the oil painting, the GitHub repo saying “I made this.”
I don’t celebrate the new world, but I also don’t resist it. The sun rises, the sun sets, I orbit helplessly around it, and my protests can’t stop it. It doesn’t care; it continues its arc across the sky regardless, moving but unmoved.
If you would like to grieve, I invite you to grieve with me. We are the last of our kind, and those who follow us won’t understand our sorrow. Our craft, as we have practiced it, will end up like some blacksmith’s tool in an archeological dig, a curio for future generations. It cannot be helped, it is the nature of all things to pass to dust, and yet still we can mourn. Now is the time to mourn the passing of our craft.
Last night, I started work on a project I’m calling Lunara. It’s my own personal iOS client for my Plex music library.
I basically rattled off a whole bunch of wishlist items at an LLM and had it organize it into a README.
I decided my goals for the project are two-fold:
- Experiment mightily. Use unfamiliar technologies in a domain I am no longer actively being paid to be an expert in.
- Use the LLMs to teach me how to work with them.
So far, in perhaps 2 hours of work, I’ve got a shell of an app that can communicate with my Plex library. All it can do right now is list out the albums, but that would’ve taken me a week or two of diligent troubleshooting before having Codex.
These “woe is my craft” posts make sense to me when you view them through the lens of an engineer who truly cares about the code.
But as someone who has never really cared much about the code, these are tools of liberation. I can come up with a hairbrained idea that’ll work specifically for me and prototype something into existence in a couple days.
There’s time to lament what once was. But like my friend Carrie used to say after losing a big race: you have twenty-four hours to feel bad for yourself. Then, you gotta get back up and keep moving forward.
LLMs are here. They enable a completely different form of developer: the homebaked variety.
Did you watch all those AI commericals yesterday during the Super Bowl? Almost all of them featured people doing their normal, boring jobs, but they were able to get computers to do all the things we, as engineers, take for granted.
This does mean us engineers won’t be paid as well as we once were, but that’s okay. Now we can go out and solve more complex problems!
You can either adapt or be relegated to the other myriad forms of artistry that hang their hat on their craft. You can hire a master woodworker to build you a table or you can go to IKEA and buy a cheap one.
Figure out what your problem is first. Then find the right approach (and tools) to solve that problem.