Task: Creating a Setup / Deployment Solution for my news app

Mark StriebeckMark Striebeck
3 min read

One part of the news app that I’m working on is a cronjob that will gather articles from various news sites and analyze them. The code is pretty much ready but I needed the setup, configuration, CD integration …

I started out on Claude:

Claude helped me to evaluate some alternatives. It was actually pretty good in evaluating them along my criteria (in particular not too complicated). At some point, the recommendation was actually:

My Honest Recommendation for Your Use Case For a single server + simple app like yours, consider this progression: Level 1: Bash Scripts (Simplest)

That’s great! I’ve seen LLM’s way to often to throw around one tool and framework after the other. To consider a simple, homegrown solution should always be on the table.

Ultimately, I asked Claude to write a comprehensive document: requirements, overview, design, implementation plan. I took that doc and reviewed it like I always review design documents. At this point it would have been great to have a Google docs integration or such where I can comment right in the doc and maybe have a conversation with Claude. Instead, I had to go back to the prompt and enter all my feedback in one long list. That always makes it tricky to review and make sure that nothing gets dropped or that things change that I didn’t comment on. But ultimately, I ended up with a pretty good document.

Full Chat with claude.ai

I saved the document to my repository and then started a chat with Amp in VSCode. Amp has access to my repository and all the existing code and scripts and can put the plan into context. I started with:

Amp made some thoughtful suggestions. After a few exchanges I asked it to start implementing along the task list.

Whenever things got tricky (e.g. my network setup is tricky as this is a VM on Mac that has an Apple and Tailgate VPN) Amp was very quick to give up the scripted approach and just gave me command lines to set it up manually. Had to remind it over and over again that we want scripts and not manual stuff. I.e. ask it to debug what failed and then use scripts.

One interesting, constant failure mode was the Ansible vault. I have to enter a password to unlock it. Amp could never remember that, tried to run it itself, that failed and then it was immediately back to whacking things together.

When we started working in the setup scripts, we had an interesting conversation about idempotency of setup scripts. Amp asked the interesting question how I want to handle DB migrations. That was a super useful question as I hadn’t considered it at all. It actually changed the design quite significantly and added a new swift package for DB migrations.

We implemented all of that, figured out how to re-use the existing setup scripts (that were written for the development environment)

At the very end, I had to insist (multiple times!) to delete everything and setup from scratch. Amp was 100% sure that it’s not necessary … but found a few bugs.

Overall, this saved me A LOT of time as there were so many different technologies involved (Proxmox, Ansible, Postgres, Docker …) Reading all that documentation alone would have taken me longer.

0
Subscribe to my newsletter

Read articles from Mark Striebeck directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Mark Striebeck
Mark Striebeck