One morning in January 2017, I woke up with the idea of creating a ZX Spectrum emulator. I did not remember that I had dreamed of anything special, but still as I got out of bed, that was the first thought wedged in my mind.
As an agile coach and architect, I spend most of my time with small teams that intend to shift to agile software development. I always look for new ideas and approaches to demonstrate the importance of automatic testing.
That January morning had me recognized that writing an emulator software offers tremendous opportunities in this field.
In my childhood, when I was 15, ZX Spectrum was my second microcomputer—I had had a ZX 81 for seven months before. After school and gymnastic training, I spent almost all of my free time to program in BASIC and Z80 assembly.
Probably that very morning my brain linked my wish for automatic testing scenarios and the joy of my ZX Spectrum past into a viable idea. Nonetheless, I felt happy and full of energy.
I knew that there are dozens of ZX Spectrum emulators for free. I did not want to create a new one because I thought mine would be better or faster. I intended to build one that helps me in my work and allows the community to learn from it. I envisaged a fun project that creates the best documented ZX Spectrum emulator that software enthusiasts can use as a reference for their custom implementations.
I am a Microsoft MVP (Visual Studio and Development Tools) and a Microsoft Regional Director and use the .NET Framework and .NET Core heavily. Thus, I decided to implement the software in C#. As I was thinking of what other value I can give the community, I got the idea to create not only an emulator but also a development environment that is integrated with the Visual Studio IDE.
As of this writing, a few days more than one year went away. My pet project, SpectNetIde, as I name it, become fun and a great tool at the same time. I’m not only enjoying improving it, but at the same time I learn a lot from it and use it in my customer teams to demonstrate software design and testing principles.
I decided to share my experiences on this blog. Stay tuned!