Greg Wood's Resumé
Summary:
I've been involved in programming since 1978.
I have written (as distinct from “used” or
“written for”) the following software functions:
- multi-user relational database systems, editors, and queries
- multi-tasking executives
- SCADA systems
- assemblers, interpreters, and compilers
- code generators
- graphics generation and display
- HTTP, FTP, SQL, and XML interfaces
- a word processor
- a PLC emulator
- a PLC ladder display
- protocol drivers including TELNET, SY-MAX (Square-D PLCs),
DF-1 (Allen-Bradley PLCs), Hitachi PLC COMM-2H,
Mitsubishi PLC QNA protocols formats 1 and 5, Telemecanique TSX-7 PLCs,
VCP8514A (NDC guided vehicles), among others
- a lot of application code
Instances of all the above-listed software have been incorporated within the
“Movement Controller”. On that page is a description of the
development of this package.
My work over the past five years has included:
- adding SQL-style queries to my core software (C++),
- writing a video-selection program (C++),
- adding an HTTP interface to my warehouse automation software, music
selection software and video selection software (C++, JavaScript IE6,
HTML5, CSS3, and SVG2),
- the presentation of strain suffered during athroscopy (WPF ‐ C# and
XAML),
- updating my website to incorporate the latest features of PHP7,
JavaScript IE6, HTML5 CSS3, and SVG2,
- revising and updating my knowledge of Python,
- teaching myself Rust,
- teaching myself Redux/React, and
- writing software to solve puzzles (C++ and Rust).
I have worked on the following types of projects:
- heavy-unit-load conveyor systems
- carton conveyor systems
- stacker and over-head vacuum cranes
- pick-to-light and sortation systems
- palletisers and depalletisers et cetera
- automatic warehouse control
- web site design
- statistical analysis
- operator interfaces for medical equipment
- SCADA systems
- automatic lane changing for the Sydney Harbour Bridge
- windscreen furnaces
- energy and maximum demand metering systems
- flow metering for gas and liquids pipelines
- three-axis machine controllers
- coal belt-wagons, crushers, stackers, and reclaimers
- TDCC (time-domain cross-connect) Telecom's digital phone network
- simulation equipment for the PC-3 Orion aircraft
- microcomputer systems for the unit for the
THE SAFETY HINDSIGHT FACTOR, hand-held sirens, vibrating feeder
controllers, sun-tan demonstration units, dark-room timers, simulation
systems for mine sweepers, battery chargers, cow-spine deactivation,
pick-to-light display units, and a brothel timer
- applications for mobile phones
- a song selection program (“The mUser”)
- a video selection program (“The vUser”)
I have used the following software:
- Microsoft Windows (mostly and currently), Unix (many years back),
Linux/X-Windows/GTK+ (several years back), several mobile phone
operating systems, some real-time operating systems, and several operating
systems from the past.
- C/C++ (this has been most of my work), WPF (C# and XAML for one project
a few years ago), Rust (as a learning exercise), VisualBasic (one project
many years ago), VBScript (used regularly), Java (two projects several years
ago), Python5 (including NumPy, SciPy, and PyQt5 - one project about five
years ago but revised recently), PHP7 and SQLite3 (for my website), HTML5,
CSS3, JavaScript IE6 (including AJAX), and SVG2 (for my website and HTTP
interfaces to my software), Redux-React (as a learning exercise), BASIC,
FORTRAN, and PL/M (ages ago)
- numerous assemblers
- The Visual Studio, Eclipse, and IAR integrated development environments
- Ethernet, TCP/IP, HDLC, X-25, and other protocol drivers
I have worked with the following computer hardware:
- IBM compatible personal computers (Windows/Linux computers)
- PLCs - Allen-Bradley, Siemens, Omron, Mitsubishi, Kingfisher, and others
- micro-processors - SGS Thompson's range, Texas Instruments MSP range,
Philips 8051-Based range, Intel's 8080, 8048, 8085, 8088, 8089, and 8086, and
Motorola's 6809.
- Several mobile phones
- single-board computers - Intel's iSBC range
- mini-computers - DEC's PDP11 and VAX11 range
Strengths:
My greatest strengths lie in writing and debugging computer software.
I have little difficulty adapting to new languages. I have done a lot of work
documenting computer software. I have a lot of experience and ability in
producing robust PLC code and in programming microprocessors and microcomputers.
I have spent time designing websites and HTTP interfaces using HTML5, CSS3,
PHP7, SQLite3, ECMAScript IE6, AJAX, and SVG2.
I work well on my own and in a team and make a good mentor; I'm a relaxed,
happy, friendly, easy-going person.
I have strong mathematical knowledge and skills.
History:
From 1983 to the present time:
I did contract work as
“
Woodgrove Digital Engineering P⁄L” and for part of this time I was also in a partnership known as
“Coromont Pty Limited”.
The main area of work during this period has been automatic warehousing.
This involved the writing of PLC software to control cranes,
heavy-unit-load and carton conveyors and their associated devices,
palletisers, and depalletisers and the computer software to coordinate these
PLCs, along with pick-to-light systems, automatic guided vehicles, and
personnel with radio terminals, and to communicate with the clients' computers.
The clients include:
- Arnott’s Biscuits in Sydney
(Allen-Bradley PLC-5 and SLC-500, PC, Windows, “C”)
- Arnott-Brockhoff-Guest in Melbourne
(Allen-Bradley PLC-5 and SLC-500, PC, MS-DOS, “C”)
- GlaxoSmithKline Pharmaceuticals in Melbourne
(Allen-Bradley PLC-5 and SLC-500, PC, MS-DOS, “C”)
- Joyce Foam in Sydney
(Mitsubishi PLC, PC, Windows)
- Leigh Mardon in Sydney
(Allen-Bradley PLC-2, PC, MS-DOS, “C”)
- Mobil Oil in Yarraville, Victoria,
(Allen-Bradley PLC-5 and SLC-500, PC, MS-DOS, “C”)
- Mobil Oil in Wellington New Zealand
(Allen-Bradley PLC-5 and SLC-500, PC, MS-DOS, “C”)
ANECDOTEFor this project, the consultant
specified a number of criteria for the storage and retrieval of pallets.
I mentioned that I could not promise to honour each criterion, as it could
be overridden by other criteria. So I assigned a precedence to each in the
order of their specification. This was accepted. I spent many hours in my
office running simulations and chasing down seemingly odd behaviour, only to
find that, in some obscure way, it was the correct result of the
specification. When the time came for acceptance testing, the consultant
specified a series of tests. These included specifying what went in, and in
what order, and what should come out and in what order. I advised him that
I would guarantee that the system would perform according to specification
but that I would not guarantee that it would produce the specified results.
The consultant replied that if it followed the specification, these would be
the results. We agreed to differ. Then the tests were executed and the
order in which loads were put away and retrieved showed little resemblence
to the test specification. I managed to demonstrate how every action was the
result of the specification, though it took a full day to analyse it. The
consultant was convinced and asked me if the algorithm could be changed. I
told him that it would present no problem to do so, but the customer was quite
satisfied with the algorithm as it stood.
- News Limited in Sydney
(Allen-Bradley PLC-5 and SLC-500, PC, Windows, “C”)
- Herald and Weekly Times in Melbourne
(Allen-Bradley PLC-5 and SLC-500, PC, Windows, “C”)
- Queensland Newspapers in Brisbane
(Allen-Bradley PLC-5 and SLC-500, PC, Windows, “C”)
- Avon/Schwarzkopf/Innovations in Sydney
(DTL Logic Cards, Telemecanique PLCs, Allen-Bradley PLC-5 and SLC-500, PC, Windows, “C”)
- Ford Australia in Melbourne
(Allen-Bradley SLC-500 and PanelView)
- Peters and Brownes Ice Cream in Perth
(Allen-Bradley SLC-500, PC, Windows, “C”)
- P&O Cold Storage/VersaCold/Americold in Melbourne
(Allen-Bradley PLC-5 and SLC-500, PC, Windows, “C”)
- Kimberly-Clark in Mt Gambier South Australia
(several projects involving Allen-Bradley PLC-5s, PCs, Windows, “C”)
- Kimberly-Clark in Ingleburn (Sydney)
(Allen-Bradley PLC-5)
- Simplot (formerly Edgell's) in Bathurst New South Wales.
(Allen-Bradley PLC-5, PC, Windows, “C”)
- Carlton United Breweries
(Allen-Bradley PLC-5)
- South Australian Breweries
(Allen-Bradley PLC-5)
- Paramatta Linen Service
(Allen-Bradley SLC-500)
This work incorporates much of the software referred to in the
“Summary”.
Work during this period also included:
- presentation of strain suffered during athroscopy
(WPF, C#, XAML, and the LiveCharts package)
- coal handling belt-wagons, crushers, stackers, and reclaimers for
Coal India (the Pippawar Coal Mine)
(Telemecanique PLCs)
ANECDOTEOur client was White Industries.
They wanted us to write a specification for the PLC code. We submitted the
specification to White Industries and I gave another copy to my wife, who
knew nothing about programming, and explained to her how to translate from
the specification to PLC code. The client got back to us complaining that
the specification was not detailed enough! It may have had its shortcomings
but not being detailed was not one of them. I pointed out that my wife was
currently upstairs programming from it, with no knowledge of programming nor
of the application.
- the development of a “Local Controller” for Telecom
Australia's Time-Domain Cross-Connect system for their digital
network
(Intel PL/M Compiler and a real-time operating system)
ANECDOTEI was rung up by my ex-colleague,
Robert. He told me that he'd been working with a team of crack
programmers who, after working on it for nine months, had completed the
functional specification, and he was looking for people to help code from
the specification. I arrived and asked him what I should do. “Greg,
here is the specification, can I get you to knock up a shell from it?“
Later that day, I poked my head back in his office, ”Robert, I've
knocked up the shell, but it doesn't fit in memory.” The only
thing to survive from that specification was the interface specifications.
- the operator interface for the control of the Sydney Harbour Bridge
lane changing
(DEC PDP11, “C”, RSX11M)
ANECDOTEThis is the only time in my
professional carrer that I would learn of my problems over the radio in the
morning. The software would crash about once every few months. We arranged
to have a crash dump produced. Once we got the crash dump, I needed to hand
disassemble the software from octal, to establish what the computer was
doing at the time of the crash. We found that it had crashed when an
asynchronous system trap (AST) was encountered while it was in the process
of changing memory-resident overlays. We subsequently found, deep in the
DEC manuals a line advising that this was not to be allowed. So we added
the disabling of ASTs and all was fine.
- supporting and helping in the continued development of the PITAN
warehouse management software
(“C”, DBase4)
- microcomputer programs for hand-held sirens, vibrating feeder
controllers, sun-tan demonstration units, dark-room timers,
simulation systems for mine sweepers, battery chargers, cow-spine
deactivation, pick-to-light display units, and a brothel timer. These
were all written using the assembly language of the microcomputer involved.
- control of fuel pumps for refueling C17 and Hercules aircraft
at Richmond Air Force Base
(Kingfisher PLC)
- control of windscreen furnaces for O'Briens Glass, Neilsen and
Moller, and Viracon (USA)
(Square-D PLCs, MS-DOS, PC, “C”)
- monitoring of electricity energy and maximum demand for O'Briens
Glass, Marina Mirage and the Tuggeranong Community Centre
(MS-DOS, PC, “C”)
- data recorder for the training sessions for the Orion PC3
aircraft
(PCB Design, Motorola 6809)
- timed-based controller for a building in Canberra, for
Honeywell
(MS-DOS, PC, “C”)
- miscellaneous PCB designs
- commercial software for Ray Guy Stables, and Bias and Bandings
(MS-DOS, PC, “C”)
1979 to 1983:
Worked for GEC-Digital.
This work included:
- SCADA system for the Boondooma Dam to Tarong Power Station water
pipeline and pumping stations. This included the development of the
SCADA software itself
(DEC PDP11, “C”, RSX11M)
ANECDOTEBefore we delivered this project,
we had a problem with the system crashing intermittently. We obtained a
crash dump and I hand disassembled the octal to discover that the problem
was a disc failure. The failure code corresponded to “No error bit
found”. This text was somewhat unhelpful, so we contacted DEC. They
more or less replied that if we were to write them a blank cheque, they
would endeavour to find out what the problem was. My boss was not inclined
to write them such a cheque, so we shipped it as it was, relying upon our
customer's maintenance contract with DEC to solve the problem. These discs,
I should mention, were large (about half a metre diameter) multi-plattered
items - they were expensive items, not the sort of thing that you might
routinely discard. When on site commissioning it, the problem occurred
again, so we called DEC maintenance. These people were far more helpful
than DEC support was. With an oscilliscope, they monitored the signal that
controls the magnetic pickup, to make up for any eccentricity in the
rotation of the platter. Apparently, the eccentricity was marginal enough
to occasionally trigger an error, but the error would be corrected and the
error bit quashed before the operating system had a chance to read it.
- Use of this SCADA system for the North Head Sewage Treatment Works.
(the SCADA system I wrote for these jobs was subsequently used on a
job for SECWA - State Electricity Commission of Western Australia -
and the Sydney Monorail)
- Development of CAD system for electrical drawings on PDP11
computers
(DEC PDP11, “C”, RSX11M)
ANECDOTEThis was my first experience with
a “C” programming language compiler. The compiler was called
“Whitesmith's C”, and as noted just above, it ran on a DEC
PDP11 with the RSX11M operating system. One of my first surprises was that
“=-” was treated equivalently “-=”. According to
compiler's documentation, very early on “=-” was defined as
the subtraction assignment operator. My next surprise was that the run-time
library did not work if you used memory-resident overlays, as it would load
itself at the top of memory, as it was with the initial
“overlay”, then be partially overwritten by the second overlay,
should it be larger than the initial one. As a result, I avoided using the
run-time library.
- Enhancement of Allen-Bradley supplied cross-compiler software for
their range of PLCs to be run on DEC PDP11 computers
(DEC PDP11, FORTRAN, RSX11M)
- Reprogramming of “Beehive” brand Video Terminal Units
to act as operator interfaces to control the operation of Anode
stacking cranes (ANI Monosteel) and car bodies (Ford)
(Assembler)
- Data recorder for the Liquids Pipeline at the Wickham terminal
(Intel SBC computers, PL/M, Assembler)
ANECDOTEWhen I had completed this project
and it was ready for delivery, the consultant came in to check it. He was
pleased, but requested that I add a password for when they set the correction
factor. The password would be echoed as question-marks to the printer. All
went well, but after a while there were reports that the two computers would
show different results (there were two computers so that they would be
confident that the results would be accurate). I went up to Wickham one
weekened and tried to get to the bottom of the problem. Everything worked
perfectly all weekend. I came back in Monday morning, and just as I was
about to pack up and leave, the problem manifested itself. “What did
you do?” I asked. ”I just entered the correction factor.”
was the reply. Then the penny dropped. The second computer received its
keyboard input from the keyboard echo of the first computer, so, instead of
receiving the correction security code, it received a series of question
marks, so ignored the correction factor.
- Data recorder for the Gas Pipleine at the Kooragang Island
terminal
(Intel SBC computers, PL/M, Assembler)
- Aggregate Handling System for Pioneer Concrete in Hong Kong
(Allen-Bradley PLC-5)
- Egg Counter for the West Australian Egg Marketing Board
(Intel SBC computers, PL/M, Assembler)
ANECDOTEThe computer board that I used for
this project and the gas pipeline project offered 4K of program memory
(EPROM) and 256 bytes of data memory. In this amount of space I needed to
write a multi-tasking executive, then code the entire application. Compare
that to the “Hello World” program for the Rust programming
language on Windows 10, which occupies 153K of memory.
- Adaptation of PLC computer-aided documentation package to run on a
microprocessor development system
(FORTRAN)
1979:
Employed by AWA specifically for the development of a training
facility for the Orion PC3 aircraft. My part of this work involved
the design of several digital printed circuit boards.
1978:
Contracted by John Sands as a system designer and programmer for
their cheque-encoding and other equipment (Intel SBC computers, PL/M,
Assembler).
1977:
A brief stint with “Random Electronics” helping their
development of a
“
Betagraph”,
whilst still looking for work.
Employed by A.J.Ferguson (Adelaide) as a sales/application/service
engineer, concentrating on microprocessors and imaging arrays.
ANECDOTEOne of the Intel products that I
was selling for A.J.Ferguson, was add-in memory for mini-computers. I had the
opportunity to speak with one of Intel's engineers, and I asked
him whether microprocessors would take over from mini-computers. His
reply was that that would never happen due to the enormous software library
that had been written for mini-computers.
1973-1976:
Student at Sydney University, Faculty of Engineering, graduating with
a B.E. (hons).
|