I develop software and hardware for use in my Amateur Radio Projects. There is little originality in what I develop, but it keeps my mind active and my interest in Amateur Radio gives me a target for application development.

Developing from scratch can be a slow and difficult process, particularly when it comes to interfacing to networks, Com ports, sound cards and doing signal processing. One is soon conscious that there is a wealth of ready-made tools out there on the Internet, in many cases free to use.

This page lists some of the developers and development tools that have inspired me. It is an acknowledgement of my indebtedness to them. Their thousands of hours of work and sharing their knowledge have allowed me to achieve results that would otherwise have been impossible for me.

Fundamental Developments

GCC C/C++ Compilers

The Raspberry Pi Foundation

The Arduino Suite

Python


Arduino Tools and Libraries

LUFA - Lightweight USB Framework for AVR


C# Tools and Libraries

I program mostly in Microsoft’s C#. I have found the following ready made tool suites invaluable for: storing configuration; processing sound sources and sinks; graphics plotting routines.

Newtonsoft Json.NET

I now use the Open Source Newtonsoft Json.NET in all my applications to store configuration parameters between runs. i.e. to provide ‘persistence’. This can be as simple as recalling what sound card was used or the size and position of an application window on the main screen. While Microsoft promotes its own standard way of storing configuration, I find using JSON in a configuration file more instinctive and easier to debug.

My thanks to James Newton-King for a package with far more power and capability that I have the skills to use.

CSCore Audio

When I decided I wanted an audio recorder with instant playback of the most recent samples, I looked for an audio library. There are several but I chose to work with CSCore - .NET Audio Library. The library has demonstration programs for its extensive facilities. A relatively minor change to one of them achieved a proof-of-concept program that did what I needed. I expect that to be the basis for a more complete and flexible solution. I also intend to use CSCore Audio for processing the data streams from simple SDR receivers like the FunCube Pro+ Dongle.

NPlot

As part of my exploration of Digital Signal Processing, I needed a library to plot graphs of filter response and display the coefficients of digital filters. There are probably many available and I tried a couple. But I found NPlot was easily understood and produced exactly the results I wanted with the minimum of effort.

In my Software List, there is an example of the output from a “proof of concept” filter design program I wrote using a port of the Remez Exchange / Parks-McClellan or Optimal algorithm.


Python

I am a convert. When I first encountered Python I was unimpressed. At the introductory level and a cursory investigation, it seemed to abandon many of the features that, over my 50+ years of dabbling in programming, made computer languages predictable, stable and usuable; I mean the requirement to declare strongly-typed variables before first use. Potentially Python would be a minefield of mismatched variables and obscure bugs, untrapped until run time.

Recently I had to read statistics from a AVM Fritz!Box Router using TR-064 protocol. A search found there is a library extension for Python - FritzConnection. Diving in to Python and with the support of Visual Studio Code as a development environment, within a few hours I had a working program that runs on Windows and a Raspberry Pi. It gathers stats into a file for 24 hour period, creating a new file at the appropriate time. l could not have done this as quickly with my other programming languages; I would have had to develop the TR-064 interface to the router.

Porting to different platforms and the huge range of open-source library extensions makes Python unusual if not unique. I am a convert, with some reservations!