
Software Development
Introduction

Software development gives you the power to transform abstract ideas into (virtual) reality, the ability to communicate with and instruct computers, microcontrollers, web servers, and even your washing machine!
From developing software for use on a PC, to creating firmware that controls physical devices, the versatility of software is limitless.
I have had the opportunity over the course of my professional career and hobby pursuits to learn a variety of software languages, but all with varying degrees of proficiency. I have a solid understanding of all the programming languages I have worked with, allowing me to effectively adapt snippets from my previous projects or code found online when implementing a specific function or requirement.
For someone like me, AI is a game changer! For example I asked Copilot to give me some JavaScript to add a listener to my Google chart to navigate to a specific URL when I click a bar on my Projects Gantt. It replied with the following snippet:
// Adding the event listener
google.visualization.events.addListener(chart, 'select', function() {
var selection = chart.getSelection();
if (selection.length > 0) {
var row = selection[0].row;
if (row !== null) {
var url = data.getValue(row, 2); // URL is in the third column
window.location.href = url; // Navigate to the URL
}
}
});
This was more or less spot on, but I had the option of tweaking it to add additional logic, as I did.
I cannot remember the nuances or syntax of each language, given I don’t write code every day in every language. AI gives me the pointers or reminds me of syntax rules I have forgotten or teaches me something new, thus enhancing my efficiency and accelerating the development process.
The following is a list of languages, formats and tools I am familiar with, in order of proficiency and experience:
Programming Languages
- C#
- C++
- Visual Basic
- VBA
- Python
- Assembly (Microchip PIC)
- Java
- C
- BASIC
Declarative Languages
- SQL
- Transact SQL
- HTML
- CSS
- XSLT
- Markdown
Scripting Languages
- VBScript
- JavaScript
- TCL
- DOS Batch
- Linux Bash
Data Formats
- CSV
- Excel
- JSON
- YAML
- XML
IDEs
- Visual Studio
- Visual Studio Code
- Arduino IDE
- Thonny
- MPLAB
- Eclipse
- PlatformIO
- PyCharm
Editors
- Notepad++
- Notepad
- Sublime Text
- TextPad
History
My first introduction to computers, or anything more advanced than a calculator or Nintendo Game & Watch, was at school in the 80s. The school had a Media Centre which had a few Sinclair ZX Spectrum 48K computers connected to TVs and tape recorders. I was immediately interested and started learning BASIC. I created some cool dynamic geometric shapes on screen, and a very ‘BASIC’ game. I wrote a few programs program that did some calculations for you, by asking you to input some numbers.

For the electronics aficionados, this is the ZX Spectrum motherboard:

In the mid 1990s I taught myself PIC microcontroller assembly, having covered assembly language programming as part of my electrical engineering studies. Then in the late 1990s that I started dabbling in Visual Basic for Applications (VBA) to enhance functionality in Microsoft Access databases created.
I soon moved onto Visual Studio 6.0 and started learning Windows application development (see my pLayer 3 and Russman’s Image Browser for examples).

In 2002, the Microsoft .Net Framework was introduced, and Microsoft made it relatively easy to switch between Visual Basic 6.0 and Visual Basic .Net. So I made the switch and used Visual basic for a year or so.
In 2003, following my enrolment at Birkbeck, University of London, I began a part-time Postgraduate Diploma in Computer Science. This course included the following subjects:
- C++
- Object Oriented Programming with Java & C#
- Software Engineering – Object Oriented Analysis and Design & UML
- Database Management
- Data Structures
- Computer Architecture
- Operating Systems
- Neural Networks
- XML
- Networks
- Information Systems
- Social Implications
- Writing, Formal & Natural
At some point after exposure to curly-braced languages I started developing in C#, which was a relatively easy transition from Visual Basic.Net.
Over the years I wrote a number of applications, mostly incomplete test applications for learning purposes, but also a few applications I intended to use, such as
Include Raspberry Pi – Python (Digital Photo Frame)