Having received QSL cards by email from sites like eQSL and other similar services, I thought it would be interesting to try building an application that could do the same. Back in 2001, I completed a two-year course in Visual Basic 6 as preparation for enrolling in an HNC program with Bath University, with the goal of making a career change. Visual Basic featured heavily in many of the course modules.
I have now been retired for seven years, and much of what I learned back then has faded—Visual Basic itself is showing its age these days. While still working, I became aware of a cross-platform development environment called Xojo, which runs on macOS, Linux, Windows, iOS, and Raspberry Pi. Xojo is very similar to Visual Basic, but there are many differences in syntax and in how the IDE works.
Despite the obstacles, I decided to give it a go—after all, we now have ChatGPT to come to the rescue.
Combining what I could remember with the patient, continuous help from ChatGPT, I was able to produce what I think is a reasonably good and genuinely useful QSL card design application. My goal was to create a program that could load an ADI/ADIF file exported from QRZ, design a QSL card with merge fields based on selected records, save the result as a JPG or PNG, and ideally email the images directly to recipients from within the program.
However, this last part turned out not to be possible due to Google’s strict security measures, including two-factor authentication. I therefore settled on saving the generated images into a folder automatically created in the user’s Documents directory when the program first runs. Alongside this, a CSV log file is generated and updated with each card produced. These files can then be uploaded to Google Drive, where a mail-merge script can send the cards in batches. This method has proven to work reliably.
I hope to add more tools and features to the program over time. I have already made a start by adding a Slim-Jim/J-Pole antenna calculator, and I plan to include more in future updates.
Over the years I have benefited greatly from the many free programs generously created and shared by fellow radio amateurs. In that same spirit, I would like to make this application freely available to anyone who would like to try it.
Using what I remembered and the continuous, in-depth support from ChatGPT, I managed to create a practical and surprisingly capable QSL card design application. My original goals were:
Load an ADIF/ADI file exported from QRZ
Design a QSL card template
Insert merge fields based on selected log records
Save the finished card as a JPG or PNG
Email cards directly from the program
Google’s security restrictions (two-factor authentication, app-specific passwords, etc.) prevented sending mail directly from within the app, so I adapted the workflow:
The application automatically creates a QSL folder in the user’s Documents directory
Each card is saved there as an image
A CSV log file is updated with every card generated
These files can be uploaded to Google Drive
A mail-merge script can then handle sending cards in batches
This method works reliably and avoids all email security issues.
Main opening screen with control buttons and text area for inported adi file
The preview window for card design & area for image drag and drop
Tool box for all designe atributes of QSL card
I plan to add more features over time. I’ve already started by including a Slim-Jim/J-Pole antenna calculator, and I hope to expand the toolkit further.
I’ve benefited greatly over the years from the many free utilities created by generous radio amateurs. In that spirit, I intend to make this application freely available to anyone who wants to try it.
If you use a Mac and would like to give it a try, message me here.
or email me at roy.g0vfs@gmail.com
73 and enjoy!
Roy - G0VFS
A very special acknowledgement goes to ChatGPT, which played a crucial role in the creation of this project. Although I came to Xojo with some past experience in Visual Basic, many of the techniques needed for this app — especially the more advanced features such as dynamic canvas graphics, draggable overlays, image-layer management, and cross-platform behaviour — were far beyond what I could have achieved on my own.
Working with ChatGPT throughout this project felt very much like having my own personal lecturer sitting beside me, ready to explain unfamiliar concepts, help me overcome roadblocks, suggest better approaches, and provide complete working code examples whenever I became stuck. Instead of being a passive tool, ChatGPT became an active collaborator: one that could answer questions, refine ideas, and help me understand why something worked — not just how.
I hope that by sharing this experience, others might be encouraged to explore something new as well. You don’t need to be an expert from the start; with curiosity, persistence, and a resource like ChatGPT available to guide you, it’s entirely possible to take on projects that once felt out of reach. If you’ve ever wanted to try building an app, experimenting with code, or learning a new technical skill, this combination of willingness to learn and the support of modern AI tools makes it more accessible today than ever before.
I hear and I forget
I see and I remember
I do and I understand
--Chinese Proverb--
Here is a quick demonstration of the program features.