My work [Software]

I grew up in the seventies computers were big, very expensive and not for the masses, the home computer revolution had not yet begun. The most technologically advanced thing in the home was the TV remote control to select one of the four channels! The closest I had come to a computer was a teletype terminal at school hooked up to some magical box through the telephone handset. It was 1980, things were about to change!

Warning lots of words follow, skip to the end for a quick summary.

Throughout my apprenticeship there where several computers around, mostly great big DEC PDP11 systems hooked up to the various wind tunnel data collection and analysis systems. Apart from having to go through complex boot up procedure once in a while I didn’t have much to do with them.

MFI computer engineering department next. We repaired the electronic systems used in the stores along with the communications systems used to connect them to the head office using the super fast 14.4kb/s high-speed network. While these were all computers of a sort I never saw them as anything more than just electronic boxes that needed fixing and testing. I did see an early IBM PC though, very boring, didn’t do much and also a super expensive Apple Macintosh SE used for the kitchen planning department – wow what a machine!


Still not really aware of computers at this point but that was about to change.

The machine tool manufacturer I worked for made laser cutting and water-jet cutting systems. The majority of the systems were all controlled by standard CNC systems, these did all the user interface, safety, motion etc. they did no do any of the clever stuff required by the laser and water-jet systems though. These had to follow the height of both the machine bed and the material. The lasers had to be pulsed to vary the power, they had to be controlled as the machine speedup and slowed down so as not to burn massive holes in the material.

The CNC system was not able to do this so a VME based system was ‘bolted on’ the handle these clever bits, these are the bits myself and my colleague where responsible for.

The VME software was cross developed on a PC using wordstar 2000 as the editor and the microtech compilers, was initially written in assembler and later on in C.

The VME systems had many analogue and digital interfaces to receive/send data from/to various other system to make things happen.

This was great, writing software came quite natural to me and being able to write a few lines of code and then have several tons of machinery throw a 2.2kW laser beam around was awesome – I could get used to this!

Things progressed fast and more and more complex systems were developed and towards the end our ‘special projects’ division were not using the CNC systems at all but had developed our own control systems. Many of these used the pSOS+ real-time operating system as the core ‘OS’.

Next, industrial vison systems. Building on what we had learnt at the previous company our now business used the same technology to provide VME based industrial vision inspection systems. These became quite complex and quite powerful often with multi-processors to get the required speed we developed user interfaces, image processing software, what ever was needed to make the systems tick.

These systems were not cheap, in fact they were very expensive and could not be afforded by too many of our potential clients. Luckily around this time the PCI bus was introduced and suddenly it was possible to grab images fast on a standard PC, this, along with big PC speed increases and the availability of Windows meant we could now provide a much lower cost unit and still keep the performance.

Originally we used turbo C, then Borland C++ and finally visual studio C++ and visual basic 6 for development. For our image processing libraries, originally we used our own ported across from the VME systems, then as image processing caught on we were able to buy in much better libraries than we could create ourselves, initially integral visions vision blox and later Halcon.

As we were supplying complete systems that were to be set up by the end user, the software had a user friendly setup screen and also a complete PLC type system for machine control.

For some high speed systems, we developed our own controller, this was based around a Texas Instruments C60 DSP device although I did not get very involved with that.

Next, food package inspection. Very similar to the previous company, the image processing was written in C/C++ and the user interface in VB6. I worked on the bottle inspection system and despite no external electronics the system could process up to around seventeen bottles a second!

Moving on to customer counting. This company provided customer counting equipment to count people entering and exiting retail stores. This consisted of a sensor unit on each of the doors and a data collection module in the back office. When I joined the current kit was showing its age, my job was to replace this with a modern and more flexible system.

This was all based around the Microchip dsPIC, PIC18 and PIC24 devices. With the exception of a few critical routines everything was written in C using MPLAB and the C18 and C30 compilers and then tested using the ICD2 and later the PicKit2/3 devices.

The system contained a real time clock, EEPROM, digital I/O, analogue I/O along with a host of other interfaces including I2C, SPI, RS232 and RS485.

Test and configuration software was written for the PC. This could be run from the engineers laptop onsite and plugged directly into the DCM or remotely from the office over TCP/IP sockets, dial up modem or GPRS. This was written in VB6 (the company standard at the time). Later software was written in


My work today pulls in all the experience from the past to be able to provide a wide and varied set of skills. Always learning new stuff, have done app development for iOS and Android and more recently there have been a couple of projects that have been written in C# and For more information on recent projects see the RAKtronics sections of the blog.

Software skill summary

This is by no means the full list but gives an idea of what I can do.

Embedded development (old school)

  • VME 68K assembler and C (Microtech?)
  • pSOS realtime operating systems.
  • Wordstar 2000.
  • Turbo C
  • Vision Blox
  • Halcon (still current but it been a while!)
  • Motorola 68K

Embedded development (current)

  • Microchip MPLAB IDE along the the C18 and C30 compilers.
  • Microchip MBLABX along with the X8, X16 and X32 compilers.
  • Atmel AVR

Embedded technology

  • Microchip PIC18, PIC24, PIC32 and dsPIC
  • Atmel AVR
  • RTC
  • RS232/RS485/SPI/I2C

Desktop development (PC)

  • Visual basic 6
  • Visual C++
  • Visual studio 2008/2010/2012/2015
  • Windows 3.1/95/98/ME/2000/XP/7/8/10
  • C#
  • Microsoft SQL server
  • Postgres SQL
  • TCP/IP Sockets
  • PC setup and configuration
  • PC hardware build

MAC Development

  • Xojo/real basic
  • MACOS 9/10
  • MAC setup and configuration
  • Xcode


  • Limited skills
  • Installation.
  • Simple applications using Xojo

App development (iOS/Android)

  • Cordova/phonegap
  • Some Xcode

Web development

  • Good understanding of the web but limited development experience

Desktop software (Windows)

  • EasyPC
  • Visual Studio
  • Wireshark
  • Adobe apps
  • Draft-sight
  • AutoCADLT
  • SolidWorks
  • MS Office
  • MS Project
  • + many others

Desktop software (Mac)

  • Affinity designer/photo
  • Adobe apps
  • XCode
  • Sketch
  • Draft-sight
  • Xojo
  • iTaskX (MS Project for Mac)
  • iWork
  • MS Office
  • + many, many others

If you’re interested in working with me, contact me here.


Share this post

Share on facebook
Share on google
Share on twitter
Share on linkedin
Share on pinterest
Share on print
Share on email