I was sitting with a friend in a cafe discussing the new mesh gradient in SwiftUI. I showed him a tiny project I had worked on the night before. The previews were stuck loading in Xcode, and I wished for a way to visualize the gradient without relying on previews or my imagination.
The Impulse to Create
The next day at 6 PM, inspiration struck. I decided to create Meshing.
I have no idea how I came up with that name, but I wanted to go with something extremely simple. And it goes well when I end my posts about mesh gradients with, "Happy Meshing!"
I impulsively turned on my MacBook, opened Claude 3.5 Sonnet, and asked for help creating an app based on the mesh gradient documentation. Here is the prompt:
In macOS 15, Apple SwiftUI introduced MeshGradient, to work with mesh gradients.
Here is the documentation for it:
I want to create a macOS app for it, called "Meshing" or something similar naming, that helps me to explore gradients, or 2x2, 3x3 or 4x4, with different colors, and positions on the screen to change using dots. Each dot will show the respective location of it. and there will be an option to copy to clipboard for it:
so i can get something like:
MeshGradient(width: viewModel.width, height: viewModel.height, locations: viewModel.meshPoints, colors: .colors(viewModel.colors), background: viewModel.background)
and paste it in my project after experimenting in the Meshing app
Claude provided a solid starting point:
I made some adjustments to Claude's initial code. I did not want a white gradient to start with. I wanted a default template:
Beautiful and gorgeous work!! I want you to provide some default color for the 3x3 grid and the background, and move the points to some areas where they look like a beautiful mesh gradient!
It did not quite grasp how mesh gradients work in SwiftUI, and it was partly my fault too because I was too excited. I wanted the result instantly without putting much efforts into prompting:
All the total points start from (0,0). I want them to be at the exact point where the gradient mesh locations are
Can you add a padding to the edgets because at 0,0 or 1,1 the dots are cutting off
I then handled most of the debugging while Claude generated the bulk of the code. Within an hour, I had a working prototype. Getting the core functionality of copying the code to clipborad right turned out to be trickier. It took me an additional half hour to make changes to my heart's content.
From Prototype to Product
I decided to release the app on Gumroad to gauge people's reactions. While setting up the listing, I used Claude to help craft the marketing description. It already had the context of our conversation about the app, making it easier to create the copy.
I want to sell this app on gumroad. what do you think would be a good price? Also please provide a description for it
It gave me the following pricing suggestions:
- $9.99 - Entry-level price, attractive for hobbyists and curious developers
- $14.99 - Mid-range price, balancing accessibility and value
- $19.99 - Premium price, reflecting the specialized nature and time-saving potential
I would recommend starting with $14.99. This price point suggests quality and value without being prohibitively expensive for most potential users.
I was dumbfounded. I was hoping something along the lines of $5 maximum.
In the end, the chat got long enough that I decided to ship instead of starting a new one:
Launch Preparation
As I prepared for launch and notarised the macOS app, I:
- Took a screenshot that goes as the thumbnail,
- Decided on a "pay what you want" pricing model starting at $0, because imposter syndrome kicked hard that I was not providing enough value.
By 8 PM, just two hours after starting, the app was live and ready for users.
I then went on to record an impromptu video for the app:
AI Collaboration
In this era of the so-called AI, I could have attempted to build the app entirely on my own. However, collaborating with Claude allowed me to ship in just two hours. There were some code that would have taken me hours if I had done it alone. I probably would have lost motivation to ship, too.
Whether you call me a 0.1x engineer or a 0.5x engineer, it does not matter. What is important for me is that I created something useful for my friends and users out there in just two hours, and gathered courage to click on the publish button.
Moving Forward
Using Claude, Gemini and ChatGPT for coding over the past many months has taught me an important lesson: do not become dependent on AI.
If there is an outage one day (or night), you should not be paralyzed. Always maintain your ability to write code independently. LLMs should be assistants, not crutches. Like developers you can delegate work to, allowing you to focus on the most important aspects of your project. Use them wisely, to build upon your productivity without compromising your skills.
You can turn ideas into reality faster than ever before. Something to be grateful about living in this new world.
Happy shipping!