De auteur beschrijft zijn ervaring met het creëren van een Python TUI-applicatie voor amateurradio (adif-logger) via 'vibe coding' met behulp van Claude. Ondanks initiële scepsis over AI in softwareontwikkeling, resulteerden enkele prompts in een volledig functionele tool die ADIF-bestanden beheert en API-gegevens van qrz.com ophaalt.
De auteur reflecteert echter op zijn veranderde rol: hij fungeerde niet als programmeur, maar als projectmanager en QA-specialist. Hierdoor concludeert hij dat AI-gegenereerde code aanvoelt als een 'wegwerpproduct' waar men geen echt eigenaarschap over heeft, wat het gevoel van vakmanschap en trots wegneemt.
Ik heb een applicatie 'vibe coded' om te zien hoe dat is
Ik heb altijd al een eenvoudige, aangepaste CLI-applicatie willen schrijven waarmee ik amateurradio-contacten snel en gemakkelijk kon loggen. De focus lag op het loggen van satellietcontacten en de wens om geen database te gebruiken. In plaats daarvan moesten de logboekvermeldingen direct in het ADIF-bestand kunnen worden bewerkt, verwijderd of toegevoegd.
Tot nu toe heb ik AI in mijn persoonlijke leven alleen gebruikt voor vertalingen. Op mijn werk gebruik ik AI om beveiligingsanalyses in een SOC te automatiseren als onderdeel van een SOAR. Ik heb vrijwel geen ervaring met AI-ondersteunde softwareontwikkeling en ben zeer sceptisch over dit onderwerp. Toch besloot ik het eens te proberen, mede omdat men zich bezig moet houden met onderwerpen die zowel persoonlijk als professioneel relevant zijn — zelfs als het aanvoelt als een klus. Bovendien zou ik deze applicatie graag willen hebben, maar heb ik niet de motivatie om er veel moeite in te stappen.
Mijn initiële prompt zag er als volgt uit:
Maak voor mij een Python TUI-applicatie voor het loggen van amateurradio QSO's. De applicatie mag niet afhankelijk zijn van databases, maar moet de gebruiker vragen om een ADIF-bestand aan te leveren. adif-logger moet vervolgens het ADIF-bestand uitlezen en de gebruikersinterface dynamisch opbouwen op basis van de velden die in dit ADIF-bestand worden gevonden. Een gebruiker moet nieuwe QSO's kunnen loggen, bestaande QSO's kunnen bewerken, bestaande QSO's kunnen verwijderen en zoeken naar bestaande QSO's.
Bij het invoeren van een nieuwe QSO moet adif-logger via door de gebruiker opgegeven inloggegevens de qrz.com API raadplegen om informatie op te halen over het ingevoerde callsign (naam, QTH, locator). Daarnaast moeten de laatste vijf QSO's met dit callsign in een aparte lijst in hetzelfde venster worden getoond. Nieuwe QSO's moeten worden toegevoegd aan het door de gebruiker opgeleverde ADIF-bestand; het bewerken van QSO's moet de betreffende vermelding in dit ADIF-bestand bijwerken, enzovoort. De applicatie moet een vertaaltabel voor ADIF-velden bevatten, zodat een leesbaar label kan worden gebruikt in plaats van de technische ADIF-veldnaam.
Dit resulteerde direct in een werkende applicatie waarmee ik QSO's kon loggen, bewerken en verwijderen. Erg indrukwekkend! In de daaropvolgende uren heb ik de applicatie getest en kreeg ik veel meer ideeën die ik vervolgens via prompts aan Claude doorgaf. De applicatie werd elke keer dat er een nieuwe versie werd gegenereerd beter en kreeg meer functies. Het resultaat is indrukwekkend: de code werkt, de applicatie doet wat ik wil en de README is zeer gedetailleerd en wordt bijgewerkt telkens wanneer de code verandert.
Wat ik vandaag heb geleerd of begrepen
- AI-gegenereerde softwareprojecten kunnen daadwerkelijk werken. Wat Claude kan genereren vanuit een eenvoudige prompt is verbazingwekkend.
- Ik kan zelf in Python programmeren. Niet bijzonder goed, maar ik kan doen wat ik wil of moet doen. Wat er vandaag is gebeurd, kan ik echter niet echt "vibe coding" noemen. Ik heb niet geprogrammeerd. Ik heb de code niet eens bekeken. Mijn rol was die van een klant of projectmanager die iemand (of iets) anders inhuurde om tegen betaling te coderen. Daarnaast was ik de QA-specialist die de applicatie testte en feedback gaf aan Claude.
- De resulterende code is daarom niet van mij. Ik ben niet eens de beheerder van de code. Om überhaupt iets met de code te kunnen doen, zou ik deze eerst moeten lezen en begrijpen — maar dan had ik hem net zo goed zelf kunnen schrijven.
- Dit maakt de gegenereerde applicatie op zekere manier een wegwerpproduct.
Ik heb de applicatie nu in een openbare Git-repo staan, maar kan ik dit met een gerust hart delen? Ik heb mijn twijfels.
Als professioneel ontwikkelaar zou ik het zeer frustrerend vinden om de code van iemand anders te moeten debuggen en daar ook verantwoordelijk voor te worden gehouden. Als hobby-ontwikkelaar zou het me storen dat ik geen ontwikkelaar meer ben. Het is voor mij onmogelijk om trots te zijn op de gegenereerde code.
Mocht je geïnteresseerd zijn, dan kun je de gegenereerde applicatie hier vinden: adif-logger.
Ik heb een applicatie 'vibe coded' om te zien hoe dat is
Ik heb altijd al een eenvoudige, aangepaste CLI-applicatie willen schrijven waarmee ik amateurradio-contacten snel en gemakkelijk kon loggen. De focus lag op het loggen van satellietcontacten en de wens om geen database te gebruiken. In plaats daarvan moesten de logboekvermeldingen direct in het ADIF-bestand kunnen worden bewerkt, verwijderd of toegevoegd.
Tot nu toe heb ik AI in mijn persoonlijke leven alleen gebruikt voor vertalingen. Op mijn werk gebruik ik AI om beveiligingsanalyses in een SOC te automatiseren als onderdeel van een SOAR. Ik heb vrijwel geen ervaring met AI-ondersteunde softwareontwikkeling en ben zeer sceptisch over dit onderwerp. Toch besloot ik het eens te proberen, mede omdat men zich bezig moet houden met onderwerpen die zowel persoonlijk als professioneel relevant zijn — zelfs als het aanvoelt als een klus. Bovendien zou ik deze applicatie graag willen hebben, maar heb ik niet de motivatie om er veel moeite in te stappen.
Mijn initiële prompt zag er als volgt uit:
Maak voor mij een Python TUI-applicatie voor het loggen van amateurradio QSO's. De applicatie mag niet afhankelijk zijn van databases, maar moet de gebruiker vragen om een ADIF-bestand aan te leveren. adif-logger moet vervolgens het ADIF-bestand uitlezen en de gebruikersinterface dynamisch opbouwen op basis van de velden die in dit ADIF-bestand worden gevonden. Een gebruiker moet nieuwe QSO's kunnen loggen, bestaande QSO's kunnen bewerken, bestaande QSO's kunnen verwijderen en zoeken naar bestaande QSO's.
Bij het invoeren van een nieuwe QSO moet adif-logger via door de gebruiker opgegeven inloggegevens de qrz.com API raadplegen om informatie op te halen over het ingevoerde callsign (naam, QTH, locator). Daarnaast moeten de laatste vijf QSO's met dit callsign in een aparte lijst in hetzelfde venster worden getoond. Nieuwe QSO's moeten worden toegevoegd aan het door de gebruiker opgeleverde ADIF-bestand; het bewerken van QSO's moet de betreffende vermelding in dit ADIF-bestand bijwerken, enzovoort. De applicatie moet een vertaaltabel voor ADIF-velden bevatten, zodat een leesbaar label kan worden gebruikt in plaats van de technische ADIF-veldnaam.
Dit resulteerde direct in een werkende applicatie waarmee ik QSO's kon loggen, bewerken en verwijderen. Erg indrukwekkend! In de daaropvolgende uren heb ik de applicatie getest en kreeg ik veel meer ideeën die ik vervolgens via prompts aan Claude doorgaf. De applicatie werd elke keer dat er een nieuwe versie werd gegenereerd beter en kreeg meer functies. Het resultaat is indrukwekkend: de code werkt, de applicatie doet wat ik wil en de README is zeer gedetailleerd en wordt bijgewerkt telkens wanneer de code verandert.
Wat ik vandaag heb geleerd of begrepen
- AI-gegenereerde softwareprojecten kunnen daadwerkelijk werken. Wat Claude kan genereren vanuit een eenvoudige prompt is verbazingwekkend.
- Ik kan zelf in Python programmeren. Niet bijzonder goed, maar ik kan doen wat ik wil of moet doen. Wat er vandaag is gebeurd, kan ik echter niet echt "vibe coding" noemen. Ik heb niet geprogrammeerd. Ik heb de code niet eens bekeken. Mijn rol was die van een klant of projectmanager die iemand (of iets) anders inhuurde om tegen betaling te coderen. Daarnaast was ik de QA-specialist die de applicatie testte en feedback gaf aan Claude.
- De resulterende code is daarom niet van mij. Ik ben niet eens de beheerder van de code. Om überhaupt iets met de code te kunnen doen, zou ik deze eerst moeten lezen en begrijpen — maar dan had ik hem net zo goed zelf kunnen schrijven.
- Dit maakt de gegenereerde applicatie op zekere manier een wegwerpproduct.
Ik heb de applicatie nu in een openbare Git-repo staan, maar kan ik dit met een gerust hart delen? Ik heb mijn twijfels.
Als professioneel ontwikkelaar zou ik het zeer frustrerend vinden om de code van iemand anders te moeten debuggen en daar ook verantwoordelijk voor te worden gehouden. Als hobby-ontwikkelaar zou het me storen dat ik geen ontwikkelaar meer ben. Het is voor mij onmogelijk om trots te zijn op de gegenereerde code.
Mocht je geïnteresseerd zijn, dan kun je de gegenereerde applicatie hier vinden: adif-logger.