![]() |
Haverly Systems mourns the loss of our colleague, Richard Tan, who passed away unexpectedly at the end of April. Richard joined the company in 1994 after earning both a doctorate in physics and a masters in computer science at Louisiana State University. Over his career, he was responsible for conceiving of and implementing some of the best features in our optimization products. I went back through our old conference paper library to remind myself of the many things that he worked on. There have been all the transitions from GRTMPS-II to G5 – both the user interfaces and the expanded naming systems, the addition of input and reporting databases, the expansion of non-linear optimization into refinery planning, the integration between H/CAMS and GRTMPS in the form of CPO and the H/COMET product. He also spent many, many hours supporting clients and collaborating with his colleagues. I would like to share with you some of my memories and thoughts about the 25 years that we worked together. |
I liked to describe Richard as my opposite number in the US – meaning that we filled similar functions in different places. We were in many ways, birds of a feather – happy to sit at our desks working away, unable to resist an interesting problem. We both taught, answered tech support questions and worked on the GRTMPS PGM (our matrix generation and recursion code). You might think we’d stepped our each other’s toes a lot, but somehow we always managed to find different things to focus on – and we shared. The non-linear code (AR, PSI) was his, the Cascading and Step-bounding are mine. He worked on H/COMET, I did the Multi-start. I converted the PGM to 2-character location codes; he did most of the work when we extended the streams to 5. I write stuff. He did the serious maths.
Another way in which we were quite different was our programming style. I’m slow. I have to mull things over for ages, and frequently go back and start over again. Richard was a "fast-prototyper". If he had an idea or a user reported a problem, the new code would appear within days. Richard, however, definitely enjoyed designing and writing code for new features more than he liked testing the old code. Since our matrix and recursion code has to handle legacy features and many alternative options, it is complex and unintended consequences are hard to avoid. I used to moan and groan when Richard would make big changes just before release dates. But actually, I like running the "performance suite" and happily took over the model test set some years ago. Richard could be sure that I would be checking everything and would let him know if he needed to take another look. Our correspondence contains many variations on "Everyone - There is a new PGM where I have .....". “Dear Richard – I put the new code through the test set and Model X has an unexpected change with the new PGM. Please have a look”. “Hi Kathy, Sorry about that, I’ve posted a correction that takes care of it.” Always polite. Always responsive. This is what a good collaboration should be.
A very pleasant memory of working with Richard is the summer we spent figuring out how to extend the Adherent Recursion code to take account of the extra impact of changing density on non-model basis properties. (Too obscure? Well, we both found it fascinating.) He thought about it in equations; I thought about it in matrix. He would e-mail me an idea written as formulae; I would send back an Excel file with a worked example. Since we approached the problem so differently, it took more than a few attempts to connect our thoughts, but we kept going until it all came into focus. Then he wrote the code, and I tested it and our clients benefited from better recursion behaviour.
Richard was the one I asked for help when trying to rearrange a client’s index formula to fit one of the Haverly types. On those afternoons where I realised I just couldn’t get through all the tech support e-mail, it was good knowing that he would be coming on line shortly and would pick up where I had to leave off. Last week while working on a badly behaved model, I found a little bug in the matrix generation code that had slipped through my testing. My fingers had almost started typing the “Dear Richard” e-mail, before I had that realisation that this isn’t how things work now. We in Haverly are, of course, adapting and adjusting to cover the work that Richard would have been doing. We’ve always been an agile organization where people look at what needs to be done and get on with doing it. For my part, as a start, I’m going to fix that bug as he happily would have, if only he were still with us. R.I.P. Dr. Richard Lun Tan.
From Kathy's Desk, 12th May 2025
Comments and suggestions gratefully received via the usual e-mail addresses or here.
You may also use this form to ask to be added to the distribution list so that you are notified via e-mail when new articles are posted.