Stewart M. Smith

This page contains an informal copy of my C.V. It is presented as a single web page for easy reading and printing on your own system.

If you would like a formal copy of my CV then you can download it. If you care to follow me on Twitter then I will keep you informed of my availability and changes to my CV. Please do not forward my CV to your clients without my permission.

The formal version of my CV is dated: 21 October 2014.

Curriculum Vitae

I am a professional software engineer. I can design, code, test and document software for a number of platforms. I have worked in a variety of application areas. However, my specialist skills lie in the development of software for datacomms, telecoms and networks.

I have produced systems for several environments, particularly Unix, real-time and embedded systems. I develop software in Java, C++, C and the common Unix scripting languages. I have a great deal of experience of developing software for communications and networking. This includes Internet, OSI and bespoke protocols. I am familiar with most of the OSI 7-Layer model.

I have worked on many developments on all stages of the development life-cycle, from analysis through design, programming and testing to installation. I have worked on one man projects and projects with 50 to 100 people. I have performed many roles, usually design or programming but also team leadership, support and testing.

I have a good academic record and considerable experience in the computer industry. I work hard and can provide excellent references from previous clients.


I am available for full-time contract work from Dec 2014. If you think I could help you then please contact me.


Skills - Languages

I have been programming in 'C' in a Unix environment since 1984. These day's, I find that I'm using C++ and Java in almost equal measures. I also write in C, SQL and the basic Unix scripting languages.

C 30 years. Unix. Linux. MOS. eCOS. Communications. System Management. Secure Systems. Embedded Systems. Datafeed. Protocols. Messaging. Emulation.
C++ 18 years. Unix. Linux. eCOS. Protocols. Systems Management. Datafeeds. Messaging. Data Analysis. Embedded Systems. ANPR.
Java 14 years Real-time Message Gateways. Video Servers. Messaging. SMS Text Messaging. Application Servers. Test Tools. 1.2, 1.4, 1.5, 1.6. J2EE. J2ME (CLDC). Annotations. Sockets, Threads, Ant. AWT. Concurrency. J2EE. J2ME. JavaComm. JavaMail. Jakarta. JAXB. JDBC. JMS. JMX. JNI. JSP. JUnit. log4j. NetBeans. NIO. Servlets. SOAP. Sockets. Swing. TFTP4JAVA. Threads. XML-RPC.
Unix (sh, ksh, bash, csh, sed, awk, grep, expect etc) 30 years Communications. Network Management. Mediation. Secure Systems. Emulation. CGI. Messaging.
SQL Occasional Mediation. System Configuration. Data Caching. MDM. Mesage Storage. MySQL. Oracle. SQL Server. Informix.
HTML/CSS Occasional Commercial web-sites (see Embedded system management. Java Servlets.
XML Occasional. UPnP. Embedded Systems Management. MDM. SMS Text Messaging. SOAP. XML-RPC. WSDL. XSD.
Other Intel 80x86 Assembler. ICL 1500 Assembler. ICL 7500 Assembler. Data 100 Assembler.

Skills - Operating Systems

I have been developing Unix software for over 25 years. I also work on embedded systems. I've written Java code to run on Linux, Unix, MS-Windows and Blackberrys.

Unix (Solaris, SCO, Linux, SVR4, DRS/NX, Version 7,...) 25 years Networks. Network Management. Mediation. Protocols. Secure Systems. Embedded Systems. Emulation. Messaging. Web Caching.Servers.
MS-Windows Occasional Some of my Java software has been deployed on Windows platforms. I've also used Windows for embedded development and general office use.
CDOS. CCP/M. 3 years Communications. Emulation. Datafeeds. Security.
MOS 1 year Embedded Systems. Routers. VPN. Integration Testing.
eCos 2 years Embedded Systems. SNMP. UPnP. MIBs. Traffic Management. System Management. Power Line Networks. Porting.
VMS 9 months Traffic Management. Real-time.

Skills - Computers

For those of you who are interested, here is the list of systems I have worked on. I have programmed most of the systems listed.

Unix Sun Servers. Sun Workstations. Linux PCs. Compaq Alpha. ICL Superserver. ICL Teamserver. ICL DRS6000. ICL DRS300. ICL PERQ. ICL Clan. DEC VAX11/780. Unisys U6000.
Java Blackberrys. Sun Servers, Linux PCs. Windows PCs.
Embedded Siemens Gemini. Siemens ST950. 3M ANPR Cameras - P382, P392, P392+, P492. Satelcom MegaPAC. ICL OSLU. LANergy Appian. Ungermann-Bass NIU. Cabletron SSR600.
Miscellaneous ICL 1500. ICL 7500. ICL 7900. DATA 100. PCs. Compaq Alpha (VMS).

Skills - Protocols

Most of my 25 years+ experience has been in the development and support of communications and networking products. These include Internet, OSI, telecomm, messaging and system management protocols and terminal emulators.

Internet Protocols: HTTP. TCP. UDP. Design. Programming. Support. User code.
Internet Protocols: ARP. BOOTP. DHCP. DVMRP. ICMP. IP. IPCP. MOSPF. PPP. RADIUS. RTSP. SNMP. Integration. Validation. Coding. Bug fixing.
XML Protocols: UPnP. XML. GENA. SOAP. SSDP. WSDL. XML-RPC. XSD. Porting. Integration. User code.
Messaging: SMPP. ACP127. BSG. CargoFACT. CargoIMP. FIX. MQ. Design. Coding. Bug Fixing.
OSI: Transport. FTAM. ASN.1. Design. Coding. Support. User code. Bug Fixing. Configuration.
ITU-T: X.25. LAP. LAP-B. Enhancement. Design. Programming. Support. Validation. Configuration. User code.
ITU-T: X.400 User code (X/Open API, Nexor).
Telecoms: SMPP. BTNR 192. BTNR 194. Ericsson MTP. Nortel CLS. Design. Coding. Support.
ICL: ICLC-01. ICLC-03. ICL ADI. ICL Model 85. Design. Programming. Support. User code.
Miscellaneous: Bootloader. GSPI. Hayes modems. SPAG Y.13. Reuters Monitor. Telocator Alphanumeric Protocol (TAP). NASDAQ. Videotex. Design. Programming. Support.
Bespoke: Design, programming and support of protocols for access control, connection management and systems management.

Skills - Jobs

The title "Software Engineer" suits me best. I get involved in most aspects of systems development from initial design through to installation and ongoing support.

Career History

3M Intelligent Transport System Centre of Excellence

(November 2013 - Present)
I maintained the software for 3Mís range of ANPR cameras and supporting toolkit. This includes fault diagnosis, fixing the code, testing and managing the releases. The embedded code is in C++ and runs on Embedded Linux. The Toolkit code is in C++ and Qt, running on Windows.


Embedded Linux, C++, fuzzy logic, Qt, Perl, Windows.
(February 2011 - July 2013)
I developed new firmware for the embedded platform. This involved enhancing existing features and adding several serial interfaces. I also ported some of the Traffic Controller firmware to the embedded platform, making use of the new features. The code is written in C++ and C using Eclipse. It runs on both Linux and eCos systems.

I also developed a simulator of one of the new IO boards. This was written in Java with JavaComm and Swing.


PowerPC, C, C++, Eclipse, eCos, Java, JavaComm, Swing, Linux, Mantis, CVS, UTMC, Serial Protocols

EADS Cassidian

(June 2010 - January 2011)
I worked on the Master Data Management (MDM) team at EADS. The work involved writing J2EE software, providing a Web Service interface to the MDM database. The code was in Java, using J2EE, SQL, Spring and Hibernate. We used JAXB, annotations and Dozer. IBM's Rational Software Architect (IDE) provided the development environment and Websphere the application server. I used JUnit and SoapUI for testing.


Java, J2EE, Oracle, SQL, CVS, JAXB, annotations, Hibernate, Spring, Soap, SoapUI, WSDK, XSD, XML.
(June 2009 - October 2009)
I designed and developed a new interface to the Infracast Managed Text Service. This allows Infracast clients to send and receive SMS text messages using the Short Message Peer-to-Peer (SMPP) protocol. The code is in Java and a SQL Server database is used as a message store.

I also wrote a Blackberry application, this periodically sends SMS text messages so that the health of the network can be monitored. This uses J2ME (CLDC) and is written in Java.


Blackberry, Java, SQL Server, JDBC, SQL, J2ME (CLDC) JMX, Eclipse, SVN.
(August 2008 - February 2009)
I designed and developed firmware to monitor and control traffic controllers through both the Simple and Full (UG405) UTMC SNMP MIBs. I used Enterprise Architect for the design work. The code is written in C++ using Eclipse. It runs on both Linux and eCos systems.

I also designed and developed the Outstation Support Server. This manages the outstation configurations and firmware using TFTP and XML-RPC protocols. The code is in Java using Servlets, XML-RPC and TFTP.


Enterprise Architect, PowerPC, C++, Eclipse, eCos, J2EE, Java, Jetty, Linux, Mantis, CVS, SNMP Net-SNMP, Servlets, TFTP, UG405, UTMC, XML-RPC.


(May 2007 - May 2008)
I designed an RTSP Gateway for Alcatel-Lucent"s Open Video Server (OVS). The gateway implements the Realtime Streaming Protocol (RTSP) for controlling Video-on-Demand (VOD) playbacks on IPTV networks. The gateway supports over 25000 simultaneous sessions and over 50000 simultaneous connections. I achieved this high connectivity using the Java NIO and concurrency classes.

I developed a prototype video cache to demonstrate how such a product might operate using MySQL, Squid, Apache and Jetty.


Java, NIO, Concurrency, RTSP, Linux, log4j, Eclipse, ClearCase, ClearQuest, ethereal, MySQL, Squid, Apache, J2EE, JDBC, Servlets, SOA.
(April 2006 - April 2007)
I designed and developed a Car Park Monitoring System. This reports the occupancy, fill rate etc to a central system. I also designed and developed a Variable Message Sign (VMS). These systems use a MIB specified by the UTMC project. The software runs on an embedded PowerPC running eCos. I've also written test software in Java using JavaComm.


PowerPC, C++, Digital IO, eCos, Eclipse, SNMP Net-SNMP, UTMC, ethereal, Java, JavaComm, CVS.
(December 2003 - April 2006)
I developed a message router for the air cargo industry. This routes CargoIMP and CargoFACT messages between freight forwarder systems, the UK CCS and other systems. Messages are transferred using a variety of standard and bespoke protocols. I designed and wrote the message routing software in C and the interfaces to JavaMail, FTP, Websphere MQ, CCS-UK, TAP and 2sms in multi-threaded Java. These programs are supported by scripts written in ksh, awk, sed, expect etc.

I developed the CCX web-site. This uses Apache, JRUN (J2EE) and MySQL on Solaris 9.


Solaris 9, SCO, GNU Toolset, C, Sockets, Java, Apache, JRUN, J2EE, JDBC JMS, JNI, Websphere MQ, JSP, Java Servlets, NetNeans, JavaMail, Jakarta Commons Net, MySQL, SQL, FTP, HTML, HTTP, TAP, SMTP, XML, cron, CVS, expect, awk, ksh, sed, grep, make, CargoIMP, CargoFACT. EDI.
(July 2002 - April 2003)
I worked on the Urban Traffic Management and Control (UTMC) project. I ported the Net-SNMP implementation of SNMP to OpenVMS. I wrote software to contol traffic signals using SNMP.

I wrote a BOOTP server for VMS and developed a prototype DSL network.


OpenVMS, C, Java, Sockets, ASN.1, Net-SNMP, UTMC, Yourdon, DHCP, DNS, UDP, ethereal.
(October 2001 - February 2002)
I ported the Intel implementation of UPnP (Universal Plug and Play) to eCos (embedded configurable OS).xi I also wrote the interface between UPnP and the application which is a PowerLine networking device.


Linux, Threads, Sockets, UPnP, XML, HTMP, HTTP, GENA, SOAP, SSDP, DOM, MIBs, GNO Toolset, make, eCos, UML.


(August 2000 - May 2001)
At OM, I worked on the design and implementation of a FIX (Financial Information Exchange Protocol) for the Jiway exchange. This included the production of FIX interface specifications, coding, development of test tools, production of test specifications and support during acceptance testing.


Solaris, Threads, FIX, NASDAQ, Sockets, C++, Java, make, sed, awk, CVS, ksh, gprof, Purify, Corba, Click.
(September 1999 - August 2000)
I developed software for testing Virtual Private Network (VPN) software and used this software for integration testing of the AAA subsystem. I also fixed bugs in a number of protocol implementations.


Dec Unix (OSF1), C, MOS, csh, ksh, GNU Toolset, ClearCase, ARP, AAA, DVMRP, IP, ICMP, IPCP, IPinIP, L2TP, PPP, VPNs, PowerPC, Routers, SmartSwitch, SSR500, SSR 600, Embedded Systems, Programming, Integration Testing.
ICL Defence Messaging Team
(March 1998 - August 1999)
In March 1998 I joined the ICL Messaging Development Team. At the time it was a failing project. I helped complete the development of the TARE Access Unit (TAU). This converts messages between X.400 and military protocols. I developed scripts for Statement Coverage Analysis. I also wrote CGI and Visual Basic scripts for presenting system statistics as HTML and Excel spreadsheets.


Solaris, C++, GNU Toolset, X.400, X/Open API, sed, awk, tcov, gprof, bash, CVS, Statement Coverage Analysis, CGI, HTML, VBA, Oracle.
ICL Chots Project
(November 1995 - March 1998)
In November 1995 I joined the Chots project at ICL in Basingstoke. I specified enhancements to the subsystem that manages graphical workstations over an OSLAN network. I then worked on the design and coding.

I went on to design a system that configured the networking software of all systems on the network. The configurations were controlled from central servers. I went on to do some of the coding which was almost complete when the project was cancelled due to requirement changes.


ICL DRS6000, ICL SuperServer, ICL TeamServer, Unix ES+, C, sh, XTI, OSLAN, OSI, RFS, make, SCCS.
ICL Telecoms - SIMS Projects
(September 1992 - September 1995)
ICL planned to develop mediation system based on newer technology designed by another group. I joined the SIMS team in September 1992 and developed three subsystems around the ICL FTAM product.

In January 1993, I was appointed Design Authority to help sort out SIMS design problems. I was in this position for the first two deliveries.

By April 1994 I was responsible for most of the networking subsystems in mediation systems. This included: software for communicating with System X, AXE10, TXE4E and UXD5B exchanges using bespoke protocols over X.25, software for managing the transfer of files using FTP and FTAM, software for managing MegaPACs, DRS network configurations and MegaPAC configurations. Towards the end of this contract most of this work was enhancing the system.


Unix SVR4, C, Informix, SQL, ESQL, make, sed, awk, ksh, MegaPAC, MegaWatch, OSLAN, XTI, FTAM, DRS6000, X.25, ISO Transport, Design, Programming, Installation, Validation, Support.
ICL Telecoms - DDC Project
(April 1991 - September 1992)
I joined the DDC project in April 1991. The DDC is a mediation system, it collects billing and other data from System X, AXE10 and TXE4E exchanges. It then passes the collected data to other systems for processing.

My first job was to integrate the ICL FTAM product into the existing DDC. Most of the design work had been done. I had to complete the design and implement it.

I designed the enhancements for DDC Phase 6. This moved some of the networking functions from System 25s to Satelcom MegaPACs. I coded and tested the MegaPAC Management programs. When the development had been completed, I went on to lead one of the installation teams.


Unix SVR4, C, Informix, SQL, ESQL, make, sed, awk, ksh, MegaPAC, MegaWatch, OSLAN, XTI, FTAM, DRS6000, ISO Transport, OSI, Design, Programming, Installation, Validation, Support.

Unisys Europe-Africa Division

(April 1990 - April 1991)
Most of my time at Unisys was spent preparing proposals for various customers throughout Europe. Typically these would involve some form of computer network. My job was to prepare the technical content of the proposal after determining the customer's requirement.

I worked on a project for Unisys marketing to determine the requirement for a Software Distribution package. My proposals were accepted and I started up the project as project manager.


Unix, C, MS-DOS, U6000, X.25, LAP, LAP-B, Software Distribution, XTI, X.25, BS5750, Project Management, Design, Support, Validation, Market Reseqrch, Quallity Audit.

Carnell Computer Technology

(December 1986 - February 1990)
At Carnell I was involved in a number of projects. Typically, these included either communications or security software. In many cases, I was involved from requirements through to installation and support.

My first task was to design some Unisys and IBM terminal emulators for DRS300, CDOS systems.

In November 1987 I started the design of an access control system for a major defence system. This allows access to a DRS300 system only after the user has been authenticated by a central mainframe. I went on to lead the development through to delivery.

I designed and developed a terminal emulation environment for Unix systems, UniView. The first version supported Videotex and ANSI terminal emulations on DRS300 and DRS400. I also worked on some enhancements such as a UniView API and connections to different network types.

Other projects included the development of a terminal emulator for connecting to System 25s, the screen handler for a Reuters Monitor. I also wrote a down-loader for a Hand-held terminal and other security products.


DRS300, ICL Quattro, DRS400, CDOS, C/CPM, Unix, MS-DOS, C, make, 80x86 Assembler, Hayes, Modems, Reuters Monitor, Videotex, System 25, ADI, Security, Design, Protocol Design, Integration, Support, Validation, Documentation.
ICL International Network Services
(December 1985 - December 1986)
I was responsible for the network management software at ICL INS. INS provided the network for Tradanet and the National Bingo Game.

Some of the network management software was bought in, which I supported, enhanced and modified to suit our requirement. I also designed and implemented the connection management protocols and software.


VAX, C, Unix 5.3 Kernel, Sockets, make, sed, awk, grep, Network Management, Design, Protocol Design, Programming, Support.
ICL Technical Directorate
(June 1984 - December 1985)
I was introduced to Unix and C when I joined the Esprit ROSE project. A consortium of European computer companies implemented OSI protocols in Unix Systems.

On joining, I helped complete the development of the transport service.

I designed the ROSE implementation of FTAM. I went on to lead the development team and program some of the FTAM and Presentation modules.


Unix Kernel, C, make, OSI Transport, FTAM, ASN.1, PERQ, CLAN, Design, Programming, Project Leadership.
ICL Osnet
(December 1982 - June 1984)
I joined the Osnet support team at the end of '82. Osnet was a new product at the time. It provided access to ethernet LANs to systems using other protocols.

I did most things that could be considered 'support'. This includes fixing bugs, product testing and network design. I also ran two field test sites and supported what was believed to be the largest LAN in Europe at Queen's University, Belfast.


Ungermann-Bass NIU, OSLAN, Osnet, Pascal, ICLC-03, Network Design, Support, Validation.
ICL Dataskil
(March 1979 - December 1982)
I joined a team developing software for the ICL 1500. This transferred BACS magnetic tape files from the 1500 to a VME mainframe. Later, I modified this code to receive the files and write them to tape. This replaced the mainframe software.

In 1980, I was seconded to ICL South Africa to work on the software for a network of ICL 1500 systems for a large retail chain. These systems connected to a VME mainframe using the ICLC-03 protocol. I developed the file transfer and the print spooling software. When the development had finished, I stayed on to support the customer during rollout.

I wrote a few other systems on the 1500 and also modified a terminal emulator on an ICL 7500.


1500 Assembler, 7500 Assembler, BACS, BSC2780, BSC3780, ICLC-01, ICLC-03, Design, Programming, Support.

Data 100

(August 1978 - March 1979)
I worked for Data 100 for a short time after leaving university. I was a trainee programmer working in assembler.


Data 100 Assembler, Programming,


University of East Anglia

The Open University

British Computer Society

Engineering Council

European Federation of National Engineering Associations (FEANI)

Institute of Electrical and Electronics Engineers (IEEE)

Sun Microsystems

Delicious Bookmark this on Delicious | Home