Skip to main content

The reports printed in 1991 on dot matrix printers are no different to today's dashboards on flat screen monitors

No alt text provided for this image

My first job was for the Railways. It was fun working there until I was told that I could not be a member of their pension fund because I was disabled. I didn't stay around to argue the point and moved on to work for a little networking company known as Network Interface Consultants founded by Andre Maree.

There was a two-year probation before an employee was allowed to join the railway pension fund and I slaved away in blissful ignorance in what was to come. I wrote programs in Cobol with embedded SQL. The database was DB2 which was hosted on IBM and Amdahl mainframes. I was assigned to the Information Centre and my boss delegated me to program some MIS systems.

Top 20

The railway wanted some simple reports which they hadn't been able to obtain from the Information Centre for years. Little did I realize that the existing team had attempted and failed to deliver. The report requests were simple. They wanted:

  • Top 20 senders of goods per station
  • Top 20 receivers of goods per station
  • Consolidated Top 20 senders and receivers of goods per station
  • Top 20 types of goods send per station
  • Top 20 types of goods received per station
  • Consolidated Top 20 types of goods per station
  • Everything that wasn't in the Top 20 was aggregated into a 21st item named other.

I disappeared into the sunset trying to write these reports with a few hiccups along the way. One memorable run had a logical flaw that resulted in a run of 23 hours and a bill of R250k. Ouch! Finally, I delivered the program.

The next day they phoned me and said great but they wanted additional reports. They wanted the report not by count but by financial value. Within an hour that was done and dusted.

Branch reports

The next request was to group all the stations into branches, i.e. stations were assigned a branch line number and the reporting was done per branch. The program took longer than what I envisaged as I had made a programming fault and couldn't spot it. It was a whole month before I had it working!

After I had delivered this version I never heard from these guys again. A good many years later I was in a remote railway office and immediately recognized my reports laying on a table. I was impressed that my program was still being used!

The lessons I learnt are:

  • You do not know what it means to be humiliated or discriminated against unless you experience it!
  • The most important things are limited to a small set. Although there were 12 million shipments per year, most people were interested in only a limited amount which translated to their logistical and financial concerns.
  • You can stare for ages at a problem and miss seeing it. It was only when I showed someone else the program to explain the problem, that I was able to fix it.
  • The life cycle of technology is longer that what you are led to believe! I assume the program would still exist and be used if the railways hadn't been state captured and screwed up

Traffic analytics

No alt text provided for this image

Now in modern network the reports we require are no different than these railway reports. The shipping transactions are network flow data, the senders and receivers are IP addresses, the goods are application types, the stations are routers and the branches are groups of locations or regions. I have seen a number of network flow applications but none seem to mimic the railway format and although they report on count, none have a concept of reporting on financial value.


Popular posts from this blog

LDWin: Link Discovery for Windows

LDWin supports the following methods of link discovery: CDP - Cisco Discovery Protocol LLDP - Link Layer Discovery Protocol Download LDWin from here.

easywall - Web interface for easy use of the IPTables firewall on Linux systems written in Python3.

Firewalls are becoming increasingly important in today’s world. Hackers and automated scripts are constantly trying to invade your system and use it for Bitcoin mining, botnets or other things. To prevent these attacks, you can use a firewall on your system. IPTables is the strongest firewall in Linux because it can filter packets in the kernel before they reach the application. Using IPTables is not very easy for Linux beginners. We have created easywall - the simple IPTables web interface . The focus of the software is on easy installation and use. Access this neat software over on github: easywall


#!/bin/bash # # usage <configuration file> # eg: /etc/ipset-threatblock/ipset-threatblock.conf # function exists() { command -v "$1" >/dev/null 2>&1 ; } if [[ -z "$1" ]]; then   echo "Error: please specify a configuration file, e.g. $0 /etc/ipset-threatblock/ipset-threatblock.conf"   exit 1 fi # shellcheck source=ipset-threatblock.conf if ! source "$1"; then   echo "Error: can't load configuration file $1"   exit 1 fi if ! exists curl && exists egrep && exists grep && exists ipset && exists iptables && exists sed && exists sort && exists wc ; then   echo >&2 "Error: searching PATH fails to find executables among: curl egrep grep ipset iptables sed sort wc"   exit 1 fi DO_OPTIMIZE_CIDR=no if exists iprange && [[ ${OPTIMIZE_CIDR:-yes} != no ]]; then   DO_OPTIMIZE_CIDR=yes fi if [[ ! -d $(dirname &q