Development languages

I have used several development languages over time, some briefly and some extensively.

C/C++

After switching from 68K Assembler to C in the 90s, C and C++ have been my goto languages until quite recently.

Many applications have been written over the years for a multitude of platforms including desktop and embedded systems, embedded being the most common.

For the desktop it has traditionally been for Windows but also Linux more recently. Going forwards my choice on the desktop would be Python or C#/Dotnet core.

For embedded systems it ranges from 68K VME systems (some time ago) to Microchip PIC based systems using the MPLABX range of IDE and compilers.

I have also developed a number of Arduino based systems recently, many using standard boards but several using bespoke designed hardware.

Recent/past projects:

  • Airport baggage monitoring system.
  • Microchip PIC based PLC replacement.
  • Numerous Arduino applications.
  • Microchip PIC based footfall counting system.
  • Vision inspection systems.

C#

After using C/C++ along with some VB6 for a long time I inherited a desktop project written in C#/Windows forms that I needed to take over, make work as a web application and then later versions were ported to Linux.

The first couple of variants were C# and ASP.NET plus signalR for realtime web pages. When the Linux port was required the project was switched to .NET Core and ASP.NET Core.

C# is a great environment to develop in, visual studio allows rapid development of applications and .NET Core allows the same code to be used for cross platform development.

If a Windows application with GUI was required then C#/Visual Studio would be my choice, for non-GUI applications it would be .NET Core or Python.

 

Recent projects:

  • Airport baggage monitoring system
  • Several test/diagnostic/configuration applications 

Python

Python is a relatively new language for me (2019). When I had to port an application from Windows To Linux there was no .NET Core libraries to talk to PLCs or generate PDF files. To overcome this I used Python that had off the shelf libraries for both of these, in fact Python seems to have off the shelf libraries for almost everything!

Being a long time C user, Python took a little getting used to but once I got my head around it I have been using it for many projects since then.

I was sceptical of Python for ‘industrial’ applications at the start but have found it to be very stable, very fast and allows very rapid application development both due to the language itself and the availability of libraries.

There is still a place for C/C++/C# where absolute speed, code size etc is critical but much of my development is now in Python.

Recent projects:

  • Plugin architecture via RabbitMQ
  • Image manipulation plugin (image size, quality and format)
  • PLC plugin to talk to Allen Bradly PLCs
  • PDF plugin to generate PDF reports
  • Environmental monitoring using MQTT
  • Python application framework

Micro Python

MicroPython is a relatively new player in town and has gained popularity on many ‘Arduino’ type boards as an alternative to using Arduino C/C++.

Some platforms use it exclusively, the Pycom range of boards for example, others like the new RaspberryPi Pico and various Adafriut board have the option of C/C++ or micrPython.

Only a few projects so far but as it follows Python quite closely many of the same methodologies apply. 

Recent projects:

  • LoRa gateway.

HTML/CSS/Javascript/PHP

I am not a web developer, but quite capable of developing web pages and applications!

The web development requirement was triggered by having to port a Windows desktop application to a multi-user web based application. This required html/css/sass/JavaScript/SignalR/C#/ASP.NET to complete the project.

I am now able to offer realtime web based applications along with various design input and graphics development.

I have also used web development technologies along with Cordova to develop several iOS and Android apps.

Also on the new list is Node.js, very much a work in progress.

I have also developed a few WordPress based websites, this one and several others as well. This is normally a byproduct of other work rather than a primary skill though.

 

Recent projects:

  • Airport baggage monitoring system
  • iOS/Android app development using Cordova
  • WordPress based websites

XOJO

Bit of an oddball, almost no one has ever heard of Xojo!

Xojo is a cross platform development system based on the old real basic language. As a Mac user I picked this up to develop some simple Mac applications several years ago, I mostly use it now for simple cross platform test and configuration utilities.

VB.NET

Only ever a couple of projects using VB.NET, and these were due to some libraries only supporting and tested with VB.NET.

Past projects:

  • Footfall counting system setup and remote diagnostic tools.
  • Tape measuring vision system

VB6

In the olden days before the birth of the .NET languages VB6 was king (at least where I worked in the past!), there was nothing it could not do.

From simple test applications to full blown industrial vision systems VB6 did it all and it was my only Windows language for many years.

Many years after its retirement in 2008 it still lingers in several applications, I still use a couple of them.

Unfortunately I can no longer develop VB6 due to not having the software or a system capable of running it.

Past projects:

  • Footfall counting system setup and remote diagnostic tools.
  • Industrial vision systems.

Misc

There has also been some assembler in the past, Motorola 68K for industrial control systems and various Microchip PIC devices. Apart from timing critical routines almost everything else is done in higher level languages now.

I use Github/Bitbucket for source control.

I can turn my hand to many languages but C/C++/C#/Python/Javascript are the ones I know bast and are actively developing in.