Yet another vibe-coded Mac app

Programming was my first job, at a time when local networks were coax cables running through the office and hard disk partitions could be as big as 2 Gb (Gb, not Tb). I still miss the focus and creative part of application development and kept dabbling as a hobbyist, most recently in Python, Lua and Go.

Over the last year, I’ve used AI in 3 capacities – as a bicycle, an e-bike, and most recently a motorbike.

I love stationery, fountain pens and wanted to design templates that I would print and use for weekly planning, note taking, to-dos etc. I decided to develop an application in Lua that would allow me to describe the layout of a page and generate it as a pdf. Simple YAML file to describe the layout as an input, perfect pdf ready to print as output.

ChatGPT helped me along the way with understanding how pdf documents are structured, without reading the 400+ page spec, and how to design rounded corners and center text in boxes. These were long interactive discussions, using it as a teacher while I coded the program by myself. I felt empowered, fully understanding the meaning of the famous Steve Jobs’ characterization as “a bicycle for the mind”.

The e-bike experience was and felt very different. I love Vivaldi (a European Chromium browser) but missed one of the best features of Firefox, i.e., the ability to white-list cookies and to automatically delete all others when closing the app. I worked with ChatGPT to understand where Vivaldi stores cookies, read the SQLite database that contains them, and write functions that would read the white-list text file and delete the other cookies after confirmation.  I wrote the logic of the script but delegated most of the coding, under my supervision, to ChatGPT.

Which leads to the final stage, fully delegating to Claude the creation of an app, motorbike style, in a language I don’t even know.

I love trying to-do apps almost as much as I love writing with fountain pens, but never found one I stuck with for a long time. So I decided to build one myself and have it available on the Mac App Store. This is how it went:

  • Using Claude Opus in chat mode, I described the app and my intent to have it on the Mac App Store, and told Claude to ask questions until it fully understood what I wanted. Then I asked it to generate specs in markdown.
  • I started a Claude Code project and asked it to build the app according to the specs. It instructed me to create an XCode project and to set a few parameters, then it generated the Swift and Swift UI code. A few iterations later, the app was essentially up and running.
  • Claude also created a set of sample data, projects and to-do’s, to use for the App Store screenshots, as well as a fully-featured website with application overview, Q&A page and a privacy policy. ChatGPT created the app icon.
  • The next step was the submission to Apple, again with Claude guidance. This required a paid developer account. The app was initially rejected – the review took a week – but was approved after a simple fix. I use the app everyday since then for work, and started working on version 1.1.

I also used Claude to build a couple of other applications to manage my 60k+ photo library, to queue YouTube videos by the channels I follow, or to setup a local Proxmox server, complete with reverse proxy and apps such as Immich, Joplin, an RSS aggregator or the YouTube app mentioned above. And I’m obviously toying with OpenClaw with local models. Each one let me uninstall a paid app or cancel a subscription.

From bicycle to motorbike in a few months. I have no idea where the road goes next or if AI will be a net positive for the world. Like the printing press, the industrial revolution or the internet, the implications for our planet and our society are largely unpredictable – but I strongly believe that this revolution needs to be understood with your hands on the handlebars.

Written by me. Edited by Claude Opus. Well, Opus also wrote the last sentence.