Why did you start using the GTK framework and why are you still using version 2?
After spending quite some time using the Win32 API to write Desktop applications, I decided I wanted to be able to distribute my binaries for multiple OSes. GTK version 2 was a popular choice back then and I still prefer it to later versions as these are clunky compared to version 2: they use more system resources (CPU and memory) and feel sluggish to the end user.
Have a look at the scribble program I wrote for GTK version 2, 3, 4, and for Qt 6.5 and see if you can spot the difference in user experience:
What are the simplest and most complex applications you wrote?
The simplest is probably Book Layout Generator and the most complex ought to be The Last Ninja Construction Kit.
Are you going to write Last Ninja 4 for the Commodore 64?
Not by myself, no. Writing a game worth of being part of the Last Ninja franchise is not an easy task. Coding, graphics and music alone aren’t quite enough to come up with a great title. A great Last Ninja title needs an intriguing plot, sensible puzzles, and a good balance between combat and non-combat interactions, to name a few.
You don’t publish the source code for most of your work. How comes?
There are a number of reasons I don’t publish the source code of my applications and such reasons vary based on the application in question.
The one reason that applies to most of them is that the applications I write fulfil my curiosity and need to understand how things work or how they were made. To me it’s a personal discovery journey and an application binary is a specification of how I would have wanted a tool to be written, had somebody else taken the initiative to write it. I would not be satisfied with just writing a specification document or putting together a mock-up: that’s because I wouldn’t have a proper feedback mechanism to validate my ideas and get other people to share their thoughts. Application development provides me with an opportunity to tackle both, while at the same time producing something tangible that performs a series of tasks automatically.
As my binaries are essentially specifications of interactions (with the user, with some hardware or data, etc.), should I decide to change programming language and development framework at some point, I would not have to worry about carrying over any legacy code, coding style, or framework.