Tuesday, 30 April 2013

GBNA & LINAS Development Remembered

British Gas Research & Development Centre, Loughborough
BG Technology plc
March 1996 - November 1999
After I left the University of Luton around Christmas 1995 I moved up to Manchester to be with my then girlfriend Naomi. It was a bad time of year to be looking for work (traditionally January is a write-off trying to find contract software development work) but eventually I ended up with two offers: one as a Systems Administrator for the University of Cambridge Engineering School and one as a contract software developer for British Gas at their Loughborough research centre site. It was a tricky decision as I loved the academic environment but in the end I decided to go for the money (the difference was quite significant).
The research centre was a very impressive building with a large atrium entrance (containing for a while LPG converted cars if I remember correctly) and what seemed to be an endless maze of offices and labs. When there first thing in the morning or last thing at night when it was partially lit it always reminded me of playing Doom with eerie corridors and dark offices.
My interview was with Tracie Withers and Howard Hughes. I was presented at one point with a sample sheet of C code and asked to find faults. I found more faults than had been initially identified which I think must have impressed.
I had a week or so's handover from Howard who I was basically replacing. If I remember correctly he was moving to Scotland. Day to day development to start with was between myself and Tracie and possibly also John Lloyd (my memory is a little sketchy here). Simon Taylor was our manager.

The team I worked with was primarily concerned with on-going development of a product called GBNA. This was a C & Motif based graphical tool running under the X-Window System for the analysis of low-pressure gas pipe networks. The code relied on an embedded FORTRAN engine called Pegasus developed in the early 1980s which used Hardy Cross analysis and smooth pipe flow laws to determine pressures and flows in the network. The code supported plotting via HPGL output and also supported large A0 digitising tablets for scanning in new developments. I spent a good few days of my early time on the project both reformatting the source code and removing compiler warnings. The XDesigner tool was used to layout the GUI graphically - the result was automatically generated files containing all the Motif code to present the application GUI.

Development of GBNA was done using Solaris Sparc workstations. Transco and British Gas however were primarily a DEC site so for delivery the software was re-compiled on Alpha workstations. I don't remember seeing a VAX although the conditionals in the code were always 'VAX' rather than 'VMS' or 'OpenVMS'. The office system relied on the venerable DEC product ALL-IN-1 for most of the time I was there although towards the end it was replaced with Lotus Notes (and for some systems SAP) which didn't meet with great approval from colleagues who could see the benefits of such a mature product as ALL-IN-1. We used Fujitsu/ICL computers which had keyboards supplied with the special WPS/PLUS key legends required for ALL-IN-1.
The team slowly expanded. Things got interesting at some point after Steve Limb arrived when talk turned to a large-area version of GBNA that could handle the entire London low-pressure regime network. The team worked together to produce a prototype that divided large networks into square geographic tiles which were then stitched together for analysis purposes.
The C codebase for GBNA (at one point in time when I did a search for authors) contained the following authors:
  • A. Corner
  • Alan Backhouse
  • Graham Kirsopp (contract staff)
  • Howard Hughes (contract staff)
  • John Lloyd
  • M.A.Hood (contractor)
  • Mark Wickens (contract staff)
  • Mike Smith
  • P. Nicholson
  • Pete Ranson (contract staff)
  • Sarah Morley
  • Steve Limb (contract staff)
  • Tracie Withers
Of these developers I personally worked with Graham, Howard, John, Mike, Pete, Steve and Tracie. Sarah wasn't on the GBNA team when I joined but I did know her.
Graham was funny - whenever he'd get something to work you'd hear a muffed 'YES' and see his hand punch in the air. Pete worked on and off as required on GBNA - he had come from a job developing software to do with satellites which always sounded really cool.
There were several software development groups. Phil Hindley worked in another group but sat with us at lunch and provided a constant source of amusement with his dour outlook on life and his view of contractors. Once over lunch I'd had enough of the 'your life being a contractor is better than mine as a permie' attitude so we broke down how much a contractor earned in reality compared with a 'permie' (taking into account lack of sick pay, holidays, healthcare, pension contributions etc.) and found the gap to not be amazingly huge. I think with Phil the sticking point of the conversation was always his unwillingness to travel and live away from home which is pretty much a requirement for a contractor. After this conversation we got less hassle from him! It also taught me early on about the view that permies can have of contractors and develop a coping mechanism. Whenever I started getting hassle I'd always ask the question 'so why aren't you a contractor if it's so great?' - typically this would bring the conversation to an abrupt halt.
We didn't get many trips out of the office. I remember one time when I did have a trip I was destined for the Peterborough Transco office to debug an issue with plotting. I had started to ride motorbikes around this time, for the first time, and was still in the love-affair stage. It looked like it was going to be a great day on the bike till I stepped outside and nearly fell on my backside - the driveway was covered in ice. To say I was disappointed was an understatement. I ended up going in the Jeep and at one point realised I'd made the right choice when I found myself sliding sideways down a road at 30 mph.

I also visited the Hinkley Transco office a couple of times. We got visits from John Scrivener who was one of our main contacts with regard to new requirements. He seemed to spend a significant amount of time on the motorway between Transco regional offices - he was based out of the Slough office.
Mike Smith joined the team as a permanent member of staff and team lead before I left and was a thoroughly nice bloke. I remember him having trouble with his Vauxhall Carlton - the rear axle was shot which I think was how a great many of these cars finally met their end. There were several rounds of redundancies whilst I was there which always made me feel sorry for those on their way out - for a while it was customary to hear rounds of applause on a Friday afternoon - an altogether sad sound. Over time the occupation of offices clearly diminished.
Around the two year mark I'd decided that my future lied along a different path with the new up-and-coming language Java. I'd treated myself to a one-week residential coding course. When I left British Gas I spent three months at Thames Water in Swindon debugging a call centre application. It was written in Java 1.1 and ran incredibly slowly compared to the mainframe based application it was designed to replace. The architecture was amazingly complex especially when it came to the inheritance hierarchy. Development was using IBM's VisualAge for Java which I developed a real love-hate relationship for. When it worked it was brilliant but it was buggy and tended to crash leaving you to have to spend hours creating a new workspace with the codebase you were working on.
In the meantime Steve Limb and I formed a company called MAST in anticipation of negotiations between British Gas and ourselves coming to fruition. The task was to re-engineer Pegasus as a Java application and also to improve performance. Analysis times using the Large Area version of GBNA were unacceptable. The goal was set for an eight-fold increase in speed.
Steve undertook the majority of work on the engine itself finding that the richer availability of appropriate data structures in Java (the engine breaks a gas network down into a tree structure and series of loops) compared with the FORTRAN implementation where everything was effectively stored in arrays and linked lists enabled him to improve efficiency of analysis markedly. I worked on the graphical front end and ancillary components to provide a prototype. At the end of six weeks we had fulfilled the rigorous requirements set down and presented the demo to Transco. I was very (perhaps a little too) enthusiastic about the potential for visualization using the new facilities available in Java for graphical presentation.
Unfortunately around this time BG plc purchased Stoner software who were based in the USA and as part of their portfolio provided a similar product to GBNA. Both Steve and I moved on to work for other companies.
I had noted at some point in the past that British Gas had closed down the Ashby Road site and it would appear that it is now the Loughborough University Science Park - having recently contacted Graham Kirsopp he confirmed that he has been back to the site to work for an energy-related company.
I've also found that it would appear that National Grid is now responsible for the low-pressure gas network in the UK. There are indications, contrary to my assumptions, that GBNA and LINAS are still being used operationally. This is great to know - too often software that you work on as a contractor eventually ends up not being used.
Footnote: the GBNA icon looks like this:

Do you recognise the feline? It’s Jonesy the cat from the movie Alien, originally captured using an Amiga Genlock by my friend Aliennerd.

Friday, 13 April 2012

Thought I'd give Blogsy a try


I've just got one of the new ipads, and very nice it is too. I bought a Logitech keyboard which works great and would lend itself nicely to blogging on the move. However, I wasn't sure which software to use but after a quick search found that there is really only one serious contender, Blogsy.

Logitech iPad keyboard

So we'll see how this post comes out!

Not sure how the text wrapping will work with this image, but it does appear to now be honouring the settings applied. It would be nice if it wasn't so fiddley!

Now to see if I can update the post once it's already been published.

Yes, that's working nicely.

I emailed Matthew Kirschenbaum yesterday - he's an author working on a book called the Literary History of Word Processing. You can read more about it here.

I occasionally use ALL-IN-1 which was Digital Equipment corporations Office Automation product, originally written by Skip Walter, John Churin and Marty Skinner. I thought Matthew might want to get in touch with Skip to see if there were any nice anecdotes, given that ALL-IN-1 was a $1 billion/year product for 18 years in a row. Skip maintains an excellent blog here.

Tuesday, 1 March 2011

HP LK464 XModmap OpenVMS Keyboard Map for Ubuntu Linux

Save the following entries to a file, for example .xmodmap-lk464, then run

$ xmodmap .xmodmap-lk464

File contents:

keycode 9=grave asciitilde
keycode 49 = less greater
keycode 199 = KP_F1
keycode 200 = KP_F2
keycode 201 = KP_F3
keycode 202 = KP_F4
keycode 110 = Find
keycode 115 = Select
keycode 191 = F13
keycode 192 = F14
keycode 142 = F16
keycode 195 = F17
keycode 196 = F18
keycode 197 = F19
keycode 198 = F20
keycode 108 = Alt_R
keycode 90 = KP_0
keycode 87 = KP_1
keycode 88 = KP_2
keycode 89 = KP_3
keycode 83 = KP_4
keycode 84 = KP_5
keycode 85 = KP_6
keycode 79 = KP_7
keycode 80 = KP_8
keycode 81 = KP_9
keycode 91 = KP_Decimal
keycode 129 = KP_Separator
keycode 22 = Delete
keycode 119 = 0x1000FF00

Friday, 13 August 2010

Successful install of OpenBSD 4.7 on a SPARCbook 3

Here is the proof:

ZS is initialized
OBP CRC check: OK
Clearing TLB Entries
Initializing Tsunami Cache
Probing for RAM @ 0x06000000
Probing for RAM @ 0x04000000
Probing for RAM @ 0x02000000
Top RAM bank @ 0x02000000
Available Memory 0x04000000
Context Table allocated, Available Memory 0x03ffc000
RAMsize allocated, Available Memory 0x03fec000
Level 1 Table allocated, Available Memory 0x03febc00
Mapping RAM @ 0xffef0000
RAMbase --> RAMsize mapped, Available Memory 0x03feba00
Mapping ROM @ 0xffd00000
ROMbase --> ROMsize mapped, Available Memory 0x03feb800
Mapping ROM @ 0x00000000
0 --> ROMsize mapped, Available Memory 0x03feb500
Available Memory 0x03feb000

ttya initialized
Probing Memory Bank #0 32 Megabytes
Probing Memory Bank #1 32 Megabytes
Probing Memory Bank #2 Nothing there
Probing Memory Bank #3 Nothing there
Incorrect configuration checksum;
Setting NVRAM parameters to default values.
Setting diag-switch? NVRAM parameter to true
Probing /iommu@0,10000000/sbus@0,10001000 at 0,0 p9000
Probing /iommu@0,10000000/sbus@0,10001000 at 4,0 espdma esp sd st SUNW,bpp led
Probing /iommu@0,10000000/sbus@0,10001000 at 1,0 ts102
Probing /iommu@0,10000000/sbus@0,10001000 at 2,0 SUNW,DBRIs3
Probing /iommu@0,10000000/sbus@0,10001000 at 3,0 Nothing there

ZS is initialized
OBP CRC check: OK
Clearing TLB Entries
Initializing Tsunami Cache
Probing for RAM @ 0x06000000
Probing for RAM @ 0x04000000
Probing for RAM @ 0x02000000
Top RAM bank @ 0x02000000
Available Memory 0x04000000
Context Table allocated, Available Memory 0x03ffc000
RAMsize allocated, Available Memory 0x03fec000
Level 1 Table allocated, Available Memory 0x03febc00
Mapping RAM @ 0xffef0000
RAMbase --> RAMsize mapped, Available Memory 0x03feba00
Mapping ROM @ 0xffd00000
ROMbase --> ROMsize mapped, Available Memory 0x03feb800
Mapping ROM @ 0x00000000
0 --> ROMsize mapped, Available Memory 0x03feb500
Available Memory 0x03feb000

ttya initialized
Probing Memory Bank #0 32 Megabytes
Probing Memory Bank #1 32 Megabytes
Probing Memory Bank #2 Nothing there
Probing Memory Bank #3 Nothing there
Probing /iommu@0,10000000/sbus@0,10001000 at 0,0 p9000
Probing /iommu@0,10000000/sbus@0,10001000 at 4,0 espdma esp sd st SUNW,bpp led
Probing /iommu@0,10000000/sbus@0,10001000 at 1,0 ts102
Probing /iommu@0,10000000/sbus@0,10001000 at 2,0 SUNW,DBRIs3
Probing /iommu@0,10000000/sbus@0,10001000 at 3,0 Nothing there
Tadpole S3 SPARCbook, Keyboard Present
ROM Rev. 2.9 V1.00
64 MB memory installed, Serial #10690881.
Ethernet address 0:0:83:a3:21:41, Host ID: 80a32141.

Spinning discs down .. done
Boot device: /iommu/sbus/ledma@4,8400010/le@4,8c00000 File and args:
Automatic network cable selection succeeded : Using AUI Ethernet Interface

Type help for more information
ok boot /iommu/sbus/espdma@4,8400000/esp/sd@5,0 bsd
Boot device: /iommu/sbus/espdma@4,8400000/esp/sd@5,0 File and args: bsd
>> OpenBSD BOOT 2.3
Booting bsd @ 0x4000
3145804+437948 [52+149536+131969]
[ using 281932 bytes of bsd ELF symbol table ]
console is ttya
Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California. All rights reserved.
Copyright (c) 1995-2010 OpenBSD. All rights reserved. http://www.OpenBSD.org

OpenBSD 4.7 (GENERIC) #152: Fri Mar 19 02:33:48 MDT 2010
deraadt@sparc.openbsd.org:/usr/src/sys/arch/sparc/compile/GENERIC
real mem = 66699264 (63MB)
avail mem = 59355136 (56MB)
mainbus0 at root: Tadpole_S3
cpu0 at mainbus0: TMS390S10 @ 50 MHz, on-chip FPU
cpu0: physical 4K instruction (32 b/l), 2K data (16 b/l) cache enabled
obio0 at mainbus0
clock0 at obio0 addr 0x71200000: mk48t08 (eeprom)
timer0 at obio0 addr 0x71d00000 delay constant 23
zs0 at obio0 addr 0x71100000 pri 12, softpri 6
zstty0 at zs0 channel 0: console
zstty1 at zs0 channel 1
zs1 at obio0 addr 0x71000000 pri 12, softpri 6
zskbd0 at zs1 channel 0: keyboard, type 5, layout 0x2e
wskbd0 at zskbd0 mux 1
zsms0 at zs1 channel 1
wsmouse0 at zsms0 mux 0
slavioconfig at obio0 addr 0x71800000 not configured
auxreg0 at obio0 addr 0x71900000
auxreg1 at obio0 addr 0x71910000
tctrl0 at obio0 addr 0x42000020 pri 11
tctrl0: main power available, lid down
clk-ctrl at obio0 addr 0x713c0000 not configured
btcham0 at obio0 addr 0x71380000: id 0x3a, revision 0xa0
com0 at obio0 addr 0x713a0000 pri 13: ns16550a, 16 byte fifo
com0: probed fifo depth: 0 bytes
iommu0 at mainbus0 addr 0x10000000: version 0x1/0x4, page-size 4096, range 64MB
sbus0 at iommu0: clock = 25 MHz
"p9000" at sbus0 class display slot 0 offset 0x100000 not configured
dma0 at sbus0 slot 4 offset 0x8400000: rev 2
esp0 at dma0 offset 0x8800000 pri 4: ESP200, 40MHz
scsibus0 at esp0: 8 targets, initiator 7
probe(esp0:3:0): max sync rate 10.00MB/s
sd0 at scsibus0 targ 3 lun 0: SCSI2 0/direct fixed
sd0: drive offline
sd1 at scsibus0 targ 5 lun 0: SCSI2 0/direct d
sd1: 3067MB, 512 bytes/sec, 6281856 sec total
cd0 at scsibus0 targ 6 lun 0: SCSI2 5/cdrom reme
bpp0 at sbus0 slot 4 offset 0xc800000: DMA2
ledma0 at sbus0 slot 4 offset 0x8400010: rev 2
le0 at ledma0 offset 0x8c00000 pri 6: address 00:00:83:a3:21:41
le0: 16 receive buffers, 4 transmit buffers
tslot0 at sbus0 slot 1 offset 0x2000000 pri 11: 2 slots
pcmcia0 at tslot0 socket 0
pcmcia1 at tslot0 socket 1
"SUNW,DBRIs3" at sbus0 class ISDN slot 2 offset 0x40 not configured
vscsi0 at root
scsibus1 at vscsi0: 256 targets
softraid0 at root
bootpath: /iommu@0,10000000/sbus@0,10001000/espdma@4,8400000/esp@4,8800000/sd@50
root on sd1a swap on sd1b dump on sd1b
WARNING: / was not properly unmounted
Automatic boot in progress: starting file system checks.
/dev/rsd1a: 2695 files, 32121 used, 810934 free (78 frags, 101357 blocks, 0.0% )
/dev/rsd1a: MARKING FILE SYSTEM CLEAN
/dev/rsd1e: 9 files, 8 used, 164293 free (21 frags, 20534 blocks, 0.0% fragment)
/dev/rsd1e: MARKING FILE SYSTEM CLEAN
/dev/rsd1d: 22231 files, 288694 used, 569387 free (1787 frags, 70950 blocks, 0.)
/dev/rsd1d: MARKING FILE SYSTEM CLEAN
setting tty flags
pf enabled
starting network
starting system logger
starting initial daemons: ntpd.
savecore: no core dump
checking quotas: done.
building ps databases: kvm dev.
clearing /tmp
starting pre-securelevel daemons:.
setting kernel security level: kern.securelevel: 0 -> 1
creating runtime link editor directory cache.
preserving editor files.
ssh-keygen: generating new DSA host key...
ssh-keygen: generating new RSA host key... done.
ssh-keygen: generating new RSA1 host key... done.
starting network daemons: sshd sendmail inetd.
starting local daemons:.
standard daemons: cron.
Thu Dec 31 12:09:33 GMT 1987

OpenBSD/sparc (tadpole.hecnet.eu) (console)

login:

Thursday, 5 August 2010

Epson Geneva PX-8 Portable Computer Serial RS/232 Cable

Thought it was worth posting this as there doesn't appear to be a reference for how to wire up a serial cable or RS/232 cable for the Epson PX-8 Mini DIN-8 to a PC DB9 female connector.


PX-8PC-DB9
15
22
33
4,51
64
76
87,8
If the cable you're using contains a CG/E Common Ground wire you can connect this to the shell of the DB9. It's best to scratch the shell just above the connections then solder the wire directly onto the shell.

Saturday, 21 November 2009

DEC Legacy Event, April 17th & 18th 2010, Windermere, UK

I am organising a DEC Legacy Event on the 17th & 18th April 2010 in Windermere, UK.

The event's purpose is to bring together people with an interest in the company Digital Equipment Corporation and their legacy of hardware, software and ethos. I am hoping to attract people willing to exhibit their DEC computer hardware and software at the event. There will be tables setup around the main hall on which equipment can be presented.

Whilst the format for the event is still fluid, I envisage that it will involve a mixture of the following:

  • Walkabout sessions giving the opportunity to talk to owners of DEC hardware and to 'have a play'
  • Demonstrations of equipment or software by their owners (languages, applications, games etc)
  • Sit down presentations about specific topics of interest
  • A programming competition (if there is enough interest)
  • Buy & sell hardware, software, relevant items
  • Raffle (with suitably themed items) on behalf of the National Museum of Computing
For more information please visit the webpage at: http://declegacy.org.uk

Saturday, 3 October 2009

The Home Network



This is when you know it's time to 'consolidate'.