Tuesday, 30 October 2018

Kotlin Part 2 - a real world example for Kotlin

In Part 1 I described my pleasure at finding what seemed to be, on the face it, an alternative to Python for larger programs where compile-time type safety is essential. And then the difficulties I ran into when I actually tried to use it. But in the end, I got a working program which could access our system's Rest API using the khttp package. It was time to move on and start building the pieces needed for a Kotlin replacement for our Python CLI.

Our system generates in real time the metadata for its Rest API, retrievable via another Rest call. This describes each object class, and each attribute of each class. The attributes of a class include its name, its datatype, and various properties such as whether it can be modified. The result of a Rest GET call is a Json string containing a tuple of (name, value) for each requested attribute. The value is always passed as a Json string. For display purposes that is all we need. But sometimes we would like to convert it to its native value, for example so we can perform comparisons or calculate an average across a sequence of historical values.

In Python, this is easy - a good consequence of the completely dynamic type structure. We keep an object for each datatype, which knows how to convert a string to a native value, and vice versa. When the conversion function is called, it returns a Python object of the correct type. As long as are careful never to mix values for different attributes (which we don't have a use case for), everything works fine. If we did happen to, say, try to add a string to a date, we will get an exception at runtime, which we can catch.

In C++ it's harder, because of course there is complete type checking. But our backend code, which is busily transforming data for tens of thousands of flows and millions of packets per second into Rest-accessible analytics, it is necessary.

The key is a C++ pure virtual base type called generic_variable. We can ask an attribute to retrieve from a C++ object (e.g. the representation of a user or an application) its current value, which it returns as a pointer to a generic variable. Later we can, for example, compare it with the value for another object, or perform arithmetic on it.

The owner of a generic variable knows nothing about the specific type of its content. But he does know that he can take two generic variables generated by the same attribute, and ask them to compare with each other, add to each other and so on. They can also be asked to produce their value as a string, or as a floating point number.

What happens if you try to perform an inappropriate operation, like adding two enums, or asking for the float value of a string? You simply get some sensible, if useless, default.

This is very easy to do in C++. The code looks something like this:

template<class C> class typed_generic_variable : public generic_variable
{
    public:
        typedef typed_generic_variable<C> my_type;
    private:
        C my_value = C();
    public:
        typed_generic_variable(const C &v) : my_value(v) { }
        string str() const { return lexical_cast<string>(my_value); }
        void set(const string &s) { my_value = lexical_cast<C>(s); }
        my_type *clone() const { return new my_type(my_value); }
        bool less(const generic_variable *other) const
        {
            my_type *other_typed = dynamic_cast<my_type*>(other);
            return other_typed ? my_value < other_typed->my_value : false;
        }
        bool add(const generic_variable *other) const
        {
            my_type *other_typed = dynamic_cast<my_type*>(other);
            if (other_typed) {
                my_value += other_typed->my_value;
            }
        }
        // and so on...
}

The point here is that in this declaration, we can use the template parameter type C exactly as though it was the name of a class. We can use it to create a new object, we can use it in arithmetic expressions, we can invoke static class functions ("companion objects" in Kotlin). When the compiler deals with the declaration of a class like this, it doesn't worry about the semantics. It only considers that when you instantiate an object of the class. In the above case, if I try to create a typed_generic_variable<foo> where the foo class does not define a += operator, then the compiler will complain.

Two very helpful C++ features here are dynamic_cast and lexical_cast. The former allows us to ask a generic variable whether it is in fact the same derived type as ourself, and to treat it as such if it is. The latter, originally introduced by Boost, makes it easy to convert to and from a string without worrying about the details.

I'll admit this looks quite complicated, but actually it's very simple to code and to figure out what is going on. The language doesn't require me to do anything special to make the type-specific class work. The code is no different than if I had explicitly coded variants for int, float, string and so on - except that I only had to write it once.

(In our actual implementation, we make extensive of template metaprogramming (MPL), so in fact if I do try to create such a variable, the add function will simply be defined as a no-op. But that's more detail than we need for the Kotlin comparison).

The goal in the Kotlin re-implementation was to use the same concept. I kind of assumed that its generic type feature, which uses the underlying Java machinery, would take care of things. But I was sadly disappointed. But this is already too long, so more in Part 3.

Kotlin, Part 1 - oh well, nice try guys

It amazes that new programming languages continue to appear, if anything even faster than ever. In the last few years there have been Scala, D, R and recently I came across Kotlin. At first sight, it looked like a good type-safe alternative to Python. It is one of several "better Java than Java" languages, like Scala, optimised for economy of expression. It runs on the system's JVM, meaning that you can ship a Kotlin program with a very high probability that it will run just about anywhere.

To save you reading this whole blog, here's an executive summary:

  • Kotlin is a very neat toy programming language, great for teaching and such
  • Its apparent simplicity fades very quickly when you try to do any real-world programming
  • Many things which are simple and intuitive to do in Python or C++ require very convoluted coding in Kotlin
  • In particular, Kotlin "generics" - Java-speak for what C++ calls templates - are completely useless for any real-world programming
  • Overall, Kotlin is always just frustratingly short of usable for any actual problem
  • That said, I guess it's fine for GUI programming, since it is now the default language for Android development

Most of my code is written in either C++ or Python. There's no substitute for C++ when you need ultimate performance coupled with high reliability. Being strongly typed, you can pretty much turn the code upside down and shake it (formally known as "refactoring") and if it compiles, there's a good chance it will work.

Python is fantastic for writing short programs, and very convenient as they get larger. All our product's middleware that does things like managing the history database, and our CLI, are written in Python. It's easy to write, and as easy as can be hoped to understand. But refactoring is a nightmare. If function F used to take a P as an argument, but now it wants a Q, there is no way to be sure you've caught all the call sites and changed them. One day, in some obscure corner case, F will get called with a P, and the program will die. This means you absolutely cannot use it for anything where reliability is vital, like network software. It's OK if a failure just means a quiet curse from a human user, or if there is some automatic restart.

So for a long time, I have really wanted to see a language with the ease of use and breadth of library support that Python has, coupled with compile time type safety. When I read the overview of Kotlin, I thought YES! - this is it.

I downloaded both Kotlin and the Intellij IDE, to which it seems to be joined at the hip, and wrote a toy program - bigger than Hello World, but less than a page of code. The IDE did its job perfectly, Kotlin's clever constructs (like the "Elvis operator", ?:) were easy to understand and just right as a solution. I was very happy.

Our CLI and associated infrastructure has really got too big for Python, so it was the obvious candidate for transformation to Kotlin. Basically it is a translator from our Rest API to something a bit more human friendly, so the first thing needed is a Rest friendly HTTP library. Two minutes with Google found khttp, which is a Kotlin redo of the Python Requests package which is exactly what we use. Perfect.

Well, except it doesn't form part of the standard Kotlin distribution. I downloaded the source and built it, with no problems. But there seems to be absolutely no way to make a private build like this known to the Kotlin compiler or to Intellij. I searched my whole computer for existing Java libraries, hoping I could copy it to the same place. Nothing I did worked.

The khttp website also included some mysterious invocations that can be given to Maven. Now, if Java programming is your day job, well, first you have my every sympathy. But second, you're probably familiar with Maven. It's an XML based (yuck!) redo of Make, that is at the heart of all Java development. (Well, it used to be, now apparently the up and coming thing is Gradle - why would you only have one obscure, incomprehensible build system when you can have two?)

So, all you have to do is plug this handful of lines into your Maven files, and everything will work!

Except... Intellij doesn't actually use Maven. I (once again) searched my whole computer for the Maven files I needed to modify, and they weren't there. After a lot of Googling, I finally found how to  get it to export Maven files. Then I edited them according to the instructions, and ran Maven from the command line using these new files. And - amazingly - it worked. By some magic it downloaded hundreds of megabytes of libraries, then built my Kotlin program - which ran and did what I wanted. And if I ran it again, it found all the hundreds of megabytes already there, and just ran the compiler. When I ran my little program, it fired off Rest requests and turned the Json results into Kotlin data structures. Perfect, exactly what I wanted.

But as I said, Intellij doesn't actually use Maven. Goodness knows what it does use, under the covers. So now I had to create a brand new Maven-based project, using my existing source file and my precious Maven config. And now, with Maven having put all the libraries where the compiler is expecting to find them, Intellij's own build system would build my program. In theory there is a place where you can tell Intellij where to find packages on the web, which ought to have been perfect. But in practice, when you get to the right page, it shows an empty list of places, and has no way to do add to it. I guess probably there's an undocumented configuration file you can edit.

That's a good point to break off. In Part 2, I'll talk about my experience trying to build a real-world application using Kotlin.




Monday, 27 August 2018

Enlightenment for Hartmut

There's something very romantic about a lighted passenger train passing through the night. Mysterious voyagers on their way to mysterious destinations, seen briefly as they cross the night-silent countryside.

It looks good on the garden railway too, a train chugging along in the dark garden. You can imagine yourself standing on a hillside, the rural tortillard trundling through the night, taking a few sleepy farmers home from the market. So it has been my goal since the beginning to have all the passenger trains illuminated.

Two of them I did a while back, but the third was still waiting. The engine is the LGB Saxon IV K 0-4-4-0 Mallett, which we christened Hartmut - alongside his bigger brother Helmut, the big 0-6-6-0 Mallet (2085D) of uncertain prototype. He has an authentic train of three coaches from the Royal Saxon Railway.

The first two trains are Thomas, with his coaches Annie and Clarabel, and Marcel with his two French coaches. In Thomas's case, it was partly driven by necessity. He has completely rigid wheels, with no vertical freedom of movement. He would constantly get stuck because often only one wheel is in contact with the rail on one side. Between dirty track and intentional dead sections - for example, on points - that can just never work. The solution was to adapt one of the coaches to collect power too, and run a cable to the engine. While I was at it, it seemed simple enough to add lighting as well.

So Thomas, and each of his coaches, have 4-pin JST connectors to form a link throughout the train. The first coach has LGB pickups on both axles, and metal wheels. In the roof are a couple of 6V grain of wheat bulbs in series, from Micromark.

Inside Thomas is a buck converter from eBay that reduces the 18V track power to something suitable to drive the lights. In real life there were just a couple of oil lamps, lit at dusk by the guard, very different from the bright fluorescent lamps in modern trains. You wouldn't be able to read, you'd just about be able to make out your neighbours' features - should you want to. Running the nominal 12V light chain on 9V gives just the right dim, yellowish gloom. The lights are controlled by the DCC decoder in the engine, meaning you have to remember to turn them on.

When I first installed the lights in Marcel's train, I didn't bother with the power pickup in the coaches, since he is an LGB engine with pick-up skates and some vertical flexibility to the wheels. But even so he sometimes has trouble especially on the siding pointwork. When I restored him to operation after his lengthy service as a guinea pig for my intelligent locomotive experiments, I added power pickup to the first of his coaches. Apart from that, the setup is identical to Thomas.

One thing I realised is that there's no point in being able to control the lights. During the day, and even quite a long way into twilight, they are invisible, so it's harmless to have them on. And at night, you always want them on. That means there's no need to connect to the locomotive, which simplifies things a lot. Instead I fitted power pickups on the first coach. This also meant I could use smaller 2-pin JST connectors, which are easier to connect between the coaches and less likely to get in the way of the couplings.

The grain of wheat bulbs work well enough but they are a pain to install. On the web I saw some LED light strips for LGB coaches, so I bought three of them. In fact they are just short segments of readily-available LED ribbon, with six LEDs, together with some connectors and a big (8200µF) capacitor for each one, so they don't flicker on dirty track. It would have been a lot cheaper and just as simple to have bought a 6-foot length of ribbon.

To finish the job needed a little eBay buck converter hidden on the floor of the coach, to turn the track power into something suitable for the LEDs. It turned out that 9V was just right for them, too. I used one of the 8200µF capacitors, so dirty track has no effect. The lights stay on for about 10 seconds even when the track power is turned off completely.

The little circuit board with (left to right) the big reservoir
capacitor, the voltage reduction board, and the
bridge rectifier.
In real life all trains carried - and still do - a red tail lamp. This is very important because it makes it easy to see whether part of the train has gone missing. The signalmen had to watch each train carefully to be sure the light was still there, day or night. If not, it was time to send an urgent message - a bell code of 4-5 in UK practice - to the previous signal box, so another train wasn't cleared to run into whatever was left behind. It has been on my list for a while to add a tail lamp to the long goods train, so I thought Hartmut's train should have one too.

The under-body wiring, with the wheels on the left side
removed.
In my box of LGB bits and pieces I found an LGB tail lamp. It's designed to clip on to a vehicle, and fits perfectly onto the veranda of Hartmut's coach. Whether that is the prototypically correct position, I have no idea. I searched for a picture of the tail end of an old-fashioned German passenger train, but to no avail. Goods trains evidently carried two tail lamps, one on each side as high as possible. The lamp comes with a bulb in a huge brass holder, that would be very conspicuous. I replaced it with a red LED, the wiring concealed behind the veranda. The wiring hides a 2K2 resistor which reduces the LED's brightness, though having watched the train at night, I think a higher value (lower current, less light) would have been better.

The LED strip installed in the roof, secured in place with two
little bridges of Sugru.
One unexpected problem I ran into is that the LED strips kept falling off the roof. They have double-sided sticky tape on the back, but it clearly wasn't up to the job. I added a layer of double-sided sticky foam, and then made little bridges of Sugru to be doubly sure. If you haven't used it, Sugru is wonderful stuff. It's a bit like epoxy putty, but much simpler to use since it doesn't have to be mixed. You open up a little foil envelope, take out a piece the size of the end of your thumb, and mould it to whatever shape you need. It is set reasonably hard after a few hours, and completely after 24 hours or so. And it lasts for ever. The first thing I ever used it for was to hold a heavy soap rack in place in the shower. After several years it is as strong as ever. I used quite a bit more to hold wires in place, especially underneath the carriages.

I put Hartmut and his train back together, keen to see them trundling around in the twilight. But I was disappointed. The lights came on, but Hartmut showed no signs of mobility. On the bench I discovered that his Zimo DCC decoder, which he has had since I first got him nearly 20 years ago, had died. Luckily I had a spare, but on that one the light outputs seem to be non-functional. Since Hartmut only ever goes in one direction, I just hot-wired the front lights to be on all the time. Running at night, I noticed that the interior light in the cab is way too bright, so that will need a resistor added somewhere.

After all that, Hartmut and his train are lit up like the others. They look very good and slightly mysterious as he chuffs slowly round the layout in the dark.

Hartmut and his train by twilight

Thursday, 23 August 2018

Flowers for Marcel - the end of my intelligent locomotive experiment

This weekend I finally abandoned my attempt to build an intelligent, "internet of things" locomotive for my garden railway. It was a very disappointing decision, because it so nearly worked. It worked on the bench, but the realities of a garden railway with dirty track, poor connections and so on meant that it was never reliable outside.

I'd chosen the most reliable and simplest of all my LGB locomotives, the Corpet-Loubet 0-6-0. This was the first one I ever bought, back in 1999, and had given perfect, trouble-free service ever since, using a Zimo decoder for DCC.

Objectives


The objectives for the project were:
  1. 100% compatibility with DCC - the loco should work on my DCC-enabled layout exactly like any other
  2. tight feedback control over speed, so the selected speed would be maintained regardless of load or layout voltage variations
  3. "non stop" operation to keep the loco moving over dirty track, dead spots and so on, using a substantial super-capacitor
  4. constant status reporting over WiFi of several things including motor current, track voltage and distance travelled
  5. in addition to DCC control, the ability to control speed, accessories, CV settings and everything else over WiFi

Design


I selected the Particle Photon as the microprocessor. It is about the size of a USB memory stick, yet has a powerful ARM processor running at 125 MHz and, built-in WiFi. My earlier experiments with adding WiFi to the Arduino had been a painful failure, so this was extremely important. Another important advantage is that the libraries are a superset of the Arduino. As it turns out, however, it isn't really suited to this job - more on that later.

To meet the first requirement, I needed an implementation of a DCC decoder. Fortunately there is a very nice one out there, NmraDcc. It's written for the Arduino, but needed only one small change to run on the Photon - because the Photon does not support hardware timer interrupts. You write functions to handle speed changes, accessory operations and so on, and it calls them when the corresponding DCC commands are received.

For a computer to be useful, it needs to communicate with the world around it. I needed the following inputs:
  1. Track voltage (analog)
  2. Internal power supply voltage (analog)
  3. Supercap voltage (analog)
  4. Motor current (analog)
  5. Motor back-EMF, used to measure speed and hence keep it constant (analog)
  6. Axle position sensor, used to measure absolute train position (digital)
  7. DCC signal, via opto-coupler from track voltage (digital)
  8. Motor control signal feedback (digital)
  9. Motor over-current (digital)
  10. Accessory over-current (digital)
and the following outputs, all digital:
  1. Control signal to motor control FET, operated via built-in pulse width modulation (PWM)
  2. Control to motor reversing relay
  3. Accessory outputs, as many as possible (limited by number of available GPIO pins)
The first thing to get right was the power supply. The non-stop feature is built using two 30F 2.7V supercaps in series, giving a 5.4V 15F capacitor. This is kept charged by a tiny buck regulator from Ebay, adjusted to give a constant 5.3V output. It has built-in current limiting to 1A. When the loco is placed on the track it takes about a minute for the cap to charge. A 3A boost regulator, also from Ebay, then turns the 5.3V back into 16V to run the motor. An arrangement of hefty Schottky diodes (chosen because of the lower voltage drop) normally takes current direct from the track, but as soon as the track voltage drops below 16V, the supercap provides the power. This arrangement is also used on my LGB track cleaner, where it works perfectly.

The power supply to the microprocessor comes via a second Ebay buck regulator, that drops the supply voltage to 12V for the accessories (lights etc), then a 7805 linear regulator that provides a stable 5V supply. At least, it is supposed to, though that turned out to be one of the weak spots of the design.

The motor is controlled via a power Mosfet, an IFR9540 that can happily switch 20 amps. Reversing uses a relay. The conventional way to control a motor these days is via an H-bridge (e.g. an L298) but I couldn't see how to get the back EMF this way, so I went for a relay instead. (I did think of a way later but by then I had built the board).

The analog inputs are first scaled by a couple of resistors, so they will never be more than the 3.3V input range of the CPU, then connected to it via a 4K7 resistor. This ought to protect the CPU, but experience showed that it doesn't.

The digital outputs are buffered via 4K7 resistors to an ULN2804 8-way Darlington. The accessory outputs, of which there are 6, are taken to a terminal block.

Software


That just leaves the software. There are several components to this:
  1. DCC decoder, using NmraDcc
  2. Basic motor and accessory control, turning the intended speed into a PWM ratio to control the motor voltage, direction into the sense of the reversing relay, and setting the accessory outputs
  3. Feedback-based motor control, reading the actual speed and adjusting the motor voltage so it matches the intended speed
  4. WiFi interface, sending and receiving messages.
  5. Generating status messages
  6. Interpreting commands received by WiFi
I invented a log format, which is sent once per second and includes not only the items to be monitored but also various internal variables that show how the motor feedback calculations are working. These messages are sent to an IP multicast address, so the loco does not need to be configured for where to send them. They contain the IP address of the loco, which can be used for sending commands back to it. A simple Python program listens to the messages and logs them, and allows commands to be typed and sent to the loco.

Speed Control


The hard part of the software is the feedback based speed control. The concept is simple enough: measure the actual motor speed, and adjust the motor control so that it matches the desired speed as set by the user. It seems simple, but control systems are always a compromise between agility, i.e. responding quickly to changed circumstances, and stability, which most importantly means not oscillating. In this case there's no point if it takes say ten seconds to respond, since the changed circumstances - like going round a tight curve - will likely have gone away.

Motor speed is measured by back EMF, the voltage that all electric motors generate in the opposite direction to the supply. Since the motor is controlled by turning the power on and off, it's straightforward to measure the voltage while no power is applied. A complication is that it is not at all linear with the motor speed, so the software needs to understand the actual relationship.

I also implemented direct speed compensation in response to supply voltage variation. As the supply voltage drops (due for example to dirty track) the motor feed is directly increased in proportion. This sounds like a good idea, but it does lead to problems as described below.

In practice I never found a set of control parameters that really worked. Anything that gave enough agility also led, some of the time, to control oscillation, meaning that the loco sped up and slowed down as it moved along at a constant speed setting.

Photon - the Good, the Bad and the Ugly


The Photon seemed the perfect part to use for the CPU in this project. It has a lot of good points, but in the end the bad points overcome them:
  • it takes a long time to start. By default, it not only has to find and log on to the WiFi network, but also set up a connection to its cloud-based server. This can take up to 10 seconds. In the situation where it is rebooting because it has briefly lost power, this is completely hopeless. It's possible to program it to avoid the second part, but it still takes a couple of seconds before it starts running its program again. The PIC processors typically used on DCC decoders are running code within milliseconds, meaning that the outage passes unnoticed.
  • it's impossible to run fine grained (microsecond) timers. For some reason to do with the cloud server, again, the finest timer resolution you can get is one millisecond. It would have been good to control the output FET directly in software, but that's impossible. Instead you have to use the on-board PWM, which significantly complicates the software.
  • it's electrically very fragile. Even a momentary signal over 5V applied to its inputs, even via a 4K7 resistor - meaning the current is limited to a milliamp - instantly destroys the whole chip.
  • it loses its configuration pretty easily - the WiFi credentials and worse, the credentials needed to contact the cloud server. Of the five Photons that gave their lives to this project (see previous point), one in particular lost it every time the software crashed. Reinstalling it is a painful process, requiring a physical USB connection to a computer and a whole series of arcane commands.
  • it's very difficult to debug. This is normal for a small embedded processor or Arduino, but the Photon is trying to be one step above this. There's no interactive debugger support, and no way to do "debug with print statements" either. Programs bigger than you could run on an Arduino are just impossible to develop as a result.
The Photon is no doubt a good part to use if there is a rock-solid power supply, it's interfaced only to gentle things using the same stable supply, and the program is pretty simple. But none of those applied in this case.

Practical Experience



The Photon board, carefully trimmed to fit - just! - in the available space.
The CPU is to the right, with the power controller to the left.
I spent a long time - several months, on and off - trying to make this work. Getting all the necessary electronics onto a board that would fit inside the loco was quite a challenge. It looks as though there is loads of room, until you try squeezing all the components in. There is also a fairly severe height limitation, especially at the sides in the water tanks. It would be easy enough using tiny surface mount parts, but they don't lend themselves to prototyping. Instead I used 0.1" stripboard, and a lot of wires.

The first Photon was a victim even before the board was built, when I was testing the basic circuit ideas using plug-in breadboards. Two wires touched and pfff! - the end of the first Photon. Another one died when I foolishly ran the board without it being firmly screwed down in the locomotive, and short-circuited the traces underneath it on some tool on the bench. That did a lot of damage, and not just the CPU. Two more just mysteriously died, for no obvious reason.

The feed-forward in the speed control turns out to have an unfortunate effect on dirty track. As the voltage drops, the loco tries to pull more current, the voltage drops further, and so on. If the initial voltage drop is large enough - i.e. the track is dirty enough - the track voltage drops so low that the loco stops. In the end it's better just to accept the loco slowing down.

There was a similar problem with the non-stop circuit, which is trying to keep its supercap fully charged even if the track voltage is lower than normal. That also leads to the same kind of evil feedback loop.

The biggest problem, though, was with the power supply to the CPU. On the bench, everything worked perfectly. But out on the garden track, no matter how carefully I isolated it, no matter how many smoothing caps I introduced, the CPU would unpredictably reset itself. This wouldn't matter, except that (see above) it then took several seconds before the train would start to move again, if at all.

Lessons Learned


The main thing I learned from this is not to do it again. The benefit is really not worth it. That said, if I did do it again I would;
  • use a CPU board that is more of a microprocessor rather than a "cloud of internet of things".
  • enforce total galvanic isolation of the CPU from all of the ugly electrical side of things. There are chips available that do this even for analog signals.
  • build a power supply for the CPU which is galvanically isolated - there are some neat chips that do this - and protected in every possible way from any kind of electrical ugliness: supercaps to keep it running for tens of seconds, beefy zeners to protect against over-voltage spikes, and so on.
My plan for now is to re-purpose the board I built. It's still useful to have real-time monitoring of the electrical conditions around the track. I plan to put it into one of Marcel's carriages, just as a passive WiFi reporter of track voltage.

The End of the Experiment



Marcel's new simplified electronics - just a Zimo decoder and
a tiny board to make the 9V for the carriage llighting.
I might have persevered for longer, but summer time came round, and Marcel's two French coaches looked lonely sitting in their siding. I really wanted to get him back on the layout and running. It took me just an hour to construct a carrier board for his old Zimo decoder, and a tiny Ebay buck converter to run the lights. Very soon he was chugging happily round the layout with his coaches in tow. He seems extremely happy, and probably very glad to get off my workbench and back outdoors.



Marcel on the layout with his short train of two French coaches








Sunday, 20 May 2018

First Trip to the Grand Canyon, 1983

In 1983 I attended a big trade show and conference in Las Vegas, with my friend and colleague Kevin. The purpose of our trip was to demonstrate the very first implementation of the new standard for connecting computers, OSI - long since eclipsed by the Internet.

We'd both spent a lot of time in the Boston area, home of our employer, Digital Equipment Corporation (DEC) - then one of the biggest computer companies in the world, though now long since defunct. But neither of of us had been to the vast expanses of the West before. We decided that since we were so close, we should explore it, including a visit to the Grand Canyon. We rented a car, and set off. The car was a Renault 11, during one of the occasional brief periods when French car manufacturers tried to sell in the US. Even though contemporary American cars weren't that great, the Renault did not compare favourably. They didn't last long.

The first leg of the journey goes across the desert to Kingman, of which more later. Just before getting there, we saw a side turning to a place called Chloride, so we decided to go and see it. After a mile or so down a paved but unkempt road, we arrived. It was my first sight of a genuine ghost town. Well, not quite - a handful of houses looked occupied, but mostly it was deserted. (I've been back there several times. In the last few years it has come back to life, and even has a general store - I have a tee-shirt to prove it). It was built as a dormitory for an enormous quarry, invisible from the town but vast when seen from the air.

Interstate I-40 heads straight east from Kingman towards Flagstaff and the turn-off for the Canyon. But US Route 66 takes a more leisurely path, and how could we resist that? It starts by heading north-east towards the western end of the Canyon, getting quite close in the Hualapai country at Peach Springs. It was on this stretch that we ran into the most impressive hailstorm I've ever seen. Visibility was quite literally zero. We pulled off the road, deafened by the noise of golf-ball sized hail hitting the car. Within a few minutes it was over. Surprisingly, the car was undamaged, and we continued on our way.

Shortly after Peach Springs and the turnoff to the Havasupai village in the Canyon itself, we came to Grand Canyon Caverns, which I believe is still there. This is a big underground cave system, with absolutely nothing to do with the Grand Canyon apart form borrowing its name. We opted to go for the tour. After descending a long, cold, damp staircase cut into the rock, we finally arrived at a huge underground cavern, full of the expected stalagtites and stalagmites. The guide pointed to some very faint scratches high up on the wall, explaining that this was where a giant sloth had fallen through a hole in the roof, thousands of years ago. We couldn't help asking where the sloth had got to - after all, he could hardly have climbed out. We were assured that it was in a museum, but we didn't really believe there had ever been a giant sloth, just some scratch-like marks on the wall.

And yet... years later, we were passing through Price, Utah, and stopped at the museum there. And in pride of place is the skeleton of a giant sloth. It didn't say where they found it, but I couldn't help wondering whether it was the very same one.

It was dark when we arrived, so it was next day before we saw the Canyon. It's vast beyond belief the first time, and every time afterwards too. There is nothing to be said about it that hasn't already been said thousands of times. We visited all the lookout points, walked up and down the rim, visited the Visitor Center, and all the other things millions of tourists have done before and since.

Taking the road eastwards out of the park lets you stop at several more lookout points, and so we did. It eventually brings you to the Navajo trading post at Cameron, on US 89. It was the first time I'd ever seen Indian country, and I knew nothing at all about the Navajo culture. It all seemed very poor and depressing to me, a few scattered small houses and trailers here and there. It was only years later when, thanks to an excellent Navajo guide at Monument Valley and then to Tony Hillerman's novels, I learned that it is traditional to live spread out like this.

It was late when we started our journey back, direct on I-40 this time. We were treated to a spectacular thunderstorm, the lightning striking into the distant mountains almost continuously. Back then there were still towns that I-40 passed through, one direction either side of a town center consisting entirely of fast food outfits and motels. We stopped in one of these for an entirely forgettable dinner.

By the time we got to Kingman it was late and we decided to stop for the night. We found a motel on the outskirts and asked the guy on the desk where we could get some dessert. He directed us to a nearby Dairy Queen. We'd never heard of Dairy Queen, and even then in 1983 it was a bit past its heyday, a fast food joint with a distinct tendency towards over-sweetened desserts. In a small, isolated town like Kingman it was the night-life centre for the local youth population. The parking lot was full of pickups and teenagers, girls in high heels and boys in their best evening outfits. It was just like a scene from Grease.

Many years later we stopped for lunch in Kingman and I set out on a quest to find the Dairy Queen. It didn't take long. It had only recently closed down, and was exactly as I remembered it - though without the partying teenagers. In small towns, of which there are plenty in the United States, Dairy Queen is still popular. Arriving late one Friday evening in Globe, Arizona, it was the only place still open. And when we visited Prineville, Oregon for the total eclipse last year, it was the place to take my grandson for a slightly nostalgic ice-cream.

The following morning we returned to Vegas. By way of a change, we took the road westwards across the Colorado, joining US 95 northwards through Searchlight. It was the first time I'd seen one of these seemingly infinite long, straight roads. They're even more impressive in the mountains, where you cross one crest and see the next hour of your life stretching down into the valley then climbing up to the next ridgeline. We took our little Renault up to its maximum speed, unimpressive by today's standards but pretty scary considering its handling.

And soon we were back in Vegas, in plenty of time for our flight back to England. I've been back several times to the Canyon, which never loses its power to impress, and I've got to know a lot more of the vast American West. But the memories of that first trip remain vivid. There are no pictures, though - I guess I didn't have a camera with me, back in the days before cellphones had even been invented, much less become cameras and everything else.

Thursday, 15 February 2018

My Mother - In Memoriam, Part 2

My mother's short autobiography describes her early life. I can't add much to that, for the obvious reason that I wasn't there, but there are a few more details that can be tacked on.

She describes her brother and his untimely end, but what she doesn't say is how close they were. He was her very protective big brother, nurturing her at a time when her parents didn't have much time or attention to give her. His death left a huge gap in her life which in some ways was never filled.

To stretch the pennies we ate various kinds of offal when I was a child. Liver was a favourite, as was steak and kidney. But one thing we never ate was tripe - the lining of a sheep's stomach. The reason is simple - she doesn't mention that the flat in Southwark was next door to a tripe yard, a place where lorries loaded up with piles of raw tripe would arrive, their load broken down into smaller lots for distribution to the butchers' shops. I've never eaten tripe in my life. Just sitting next to people eating andouillette - French tripe sausage - once turned my stomach. The smell of lorries full of the stuff must be foul beyond belief.

My parents met at a dance, soon after the end of the war in 1945. My Dad had been married before the war, and had a daughter (Anne) in 1938. He spent the war, all of it, teaching soldiers Morse Code in North Wales, and his marriage didn't survive the separation. He was 17 years older than my mother, but very handsome for his age and very charming.

They married in 1949, living in a single room in a house in Brixton that they shared with my mother's sister and her husband, and their mother and father. (Later the house, 22 Normandy Road, was the sparking point for the Brixton riots in 1985). Anne came to stay with them, at 12 years old. It must have been very cozy. She had her own place to sleep, but when the LCC inspector came to assess them for a home of their own, she moved all their things into their bedroom. The ruse worked, and they were assigned a brand new council house on the outskirts of London, in the new development of Harold Hill. That was where I spent the first 9 years of my life, at 61 Hilldene Avenue with a busy bus-stop directly outside the bedroom windows - maybe the reason why I became fascinated by London's buses.

My father worked in a shop selling haberdashery - a quaint word now, meaning all the accessories associated with making clothes - to East London's "rag trade". He earned very little, so it was imperative for my mother to make some money if we were to live at anything beyond a subsistence level. She was an extremely accomplished typist, achieving a speed of 90 words per minute. On a modern electronic keyboard that is very fast. On a manual typewriter, where every imprinted letter is a direct result of the typist's physical strength in her fingers, it is truly extraordinary. It was astounding to watch her type, almost like watching Yuja Wang play the piano.

Before I was old enough for her to leave me with anyone, she took on typing work at home. That meant we always had a nearly-new manual typewriter, and when she wasn't working, I used it too. I never learned to touch type, but thanks to that home-work, I became a formidable two/three/four finger typist.

She started working again when I was very small, even before I went to school - needs must. We'll gloss over the dreadful woman who was supposed to take care of me - this is my mother's story, not mine. For a long time she worked for an accountant, Stuart Lever, typing balance sheets and profit and loss accounts for his customers. She had to stop that when my brother David was born, when I was 7.

Money was still very short, though. Somehow she had to earn some, even though she couldn't work during the week. Her solution was weekend work, on Saturday taking calls from punters at the bookmaker's William Hill, and on Sunday checking pools coupons at Zetters, then one of Britain's biggest football pool companies. That lasted for three or four years, during which time she was promoted to floor supervisor at Zetters. The training came in very handy for me when, later, I also worked there for pocket money while I was still at school.

As soon as my brother was old enough to be looked after, it was time for her to get full time work again. For a while she did secretarial work for the District Bank, one of the predecessors of today's NatWest. I must have been about 12 when she took the job of personal assistant to a City estate agent (realtor), Marcus King. He was a very interesting character, a doyen of City life, a central member of the Rotary Club and involved in all sorts of societies and institutions. To make it more complicated, he was also an orthodox Jew, respecting all of the dietary and other laws imposed by his religion. There are some easy and well-known ones - no pork of course, and no mixing meat and dairy. But there are dozens more, and it was my mother's job to make sure that in all of his lunch and dinner engagements, they were all respected. She probably knew more about the constraints of orthodox Judaism than any other gentile in the country. Even now I can remember words like mezuzah (a charm placed on a doorpost) and yamulka (the Jewish prayer cap).

Marcus King owned a Rolls Royce Silver Cloud, which he parked in the street outside his office in Cheapside. One day it broke down, and it fell to my mother to call Rolls and try to persuade them to come to the rescue, as they were reputed to do, before some lesser garage had to rescue it. They refused. So much for tradition.

I've mentioned only her professional life. Meanwhile, though, she was raising her two sons and her step-daughter, and generally taking care of the family. In those days it was considered normal that men didn't deal with household stuff, beyond buying the paraffin for the kitchen heaters, and so she was also responsible for cooking meals every day, and for keeping the house tidy and organised. For a good few years it was my job to take the washing to the launderette every Saturday.

As a mother she was very demanding. There was never any doubt of her love for her children, but her own upbringing had taught her not to make it too obvious. When, at 11 years old, I moved to a Grammar School, I was told in no uncertain terms that I would have to make a serious effort to compete with the smart kids from the middle class areas that the school also took in. As it turned out, they weren't very smart at all, and academically I did very well. I don't remember ever being praised for it though. It took me many, many years to overcome my resentment about this, for never being given any appreciation or praise or even encouragement. But maybe it was also an incentive to strive and try harder, and maybe such success as I have had would have eluded me without that kind of pressure.

Public displays of affection were not at all the thing of my parents' generation - just think of Brief Encounters, one of my father's favourite films. I can only recall seeing them hold hands just once. It shocked me so much that I still remember the details of the occasion - I was about 11, and we were walking along a road at North Woolwich, by the famous Free Ferry. I certainly never saw them kiss, or show any other sign of intimacy.

I can only remember seeing her cry once in my whole life. We had cats on and off throughout my childhood, and one of them got very sick. His rear legs had been paralysed by eating slug poison, which happened to be both very attractive to cats and to destroy their nervous systems. Ugh. The poor thing was dragging himself round by his front paws, and there was only one thing left to do. My mother sobbed for that poor cat.

When I think of her professional life, I think of a company called Roha, and Harry Schmiedl. She had done some temp work for him earlier, before Marcus King. Some time in my teens, he called her and told her he needed her. And that was the rest of her career. Schmiedl was quite a character, the classic East European Jew made good. He had left his native Czechoslovakia in 1937, for obvious reasons. In London he sold cloth from a barrow in street markets, gradually building up enough money through his financial savvy to start his own company, Roha. He had a big house in Hampstead, and drove a Jaguar Mk X - the ultimate arriviste motor in those days.

She worked for Roha for about 20 years, until her retirement at 60. They were "textile converters". A company, typically a big retailer - their biggest customer by far was Marks & Spencer - would decide on say a dress for their summer collection. They would decide on the fabric and the design. Roha would then find the mills to make enough fabric, the printers to print it, and all the rest of the complicated logistics involved. They made their money by taking a margin on the deal, and as you might imagine Marks & Spencer drove a hard bargain. But Schmiedl was up to the job. He carried with him a tiny Curta mechanical calculator, which he would twirl frantically while on the phone to suppliers and customers to figure out how to get his wafer-thin margin. (I wonder what happened to that calculator? They are sought after antiques now, worth $1000 or more on eBay).

While doing deals made the money, most of the work was in the logistics of manufacture, shipping and printing. My mother excelled at this kind of organisation, and her talents were quickly used to the full. She travelled frequently, most often to the mills and printers in Germany, Alsace and in northern England. She visited Germany often enough to become a competent German speaker. Often she carried huge samples with her, like on the occasion when one of them became so firmly wedged into a corner of the baggage hold (no containers in those days) that it took over an hour to dislodge it.

From being the boss's secretary she became a Director of the company - the British equivalent of a VP. Today she would have been called the Chief Operations Officer. It was typical of her though that she refused to accept a corresponding level of pay. It was always in her mind that one day she might want to quit, and go back to secretarial work. Both of my parents were horrified at the thought of anything ostentatious, and I think that was part of it too.

A little story about that... when I was about 17, Schmiedl insisted on her having a company car. Back then this was a huge tax advantage. Rear-view mirrors then were bolted to the wings by the selling garage, not built in to the doors. They called to ask whether she wanted plane (flat) or convex mirrors on her new 1970 Ford Escort (EUC 996J - funny how I still remember that). My mother heard this as plain - as in not fancy - and was certainly not going to have anything fancy on her car.  A pity, because convex mirrors give you a wider field of view, which can be very useful.

I left home to go to university in 1971, when I was 18, and married not long after. For the next 17 years visits to my parents were en famille and while we remained firmly in touch, the daily conversations weren't there to stay in touch with events. My father retired in about 1978. Under considerable pressure from my mother, he started for the first time to take part in the general running of the house. In the same year my brother left home, too. With all three children out of the way (my sister Anne had married in 1964, although she lived only a couple of miles away), they started to travel. Holidays in Yugoslavia and elsewhere in Europe were common. Until then, my father had barely ever left Britain.

Our relationship changed again in 1988, when my own marriage broke up. For three years I lived alone on the other side of London, and would often travel over in the evening to spend an evening at the family home, and spend the night in my old bed in my old bedroom. But at first, things were very difficult. My father, especially, was very upset at this turn of events, and for several months didn't speak to me. It was my mother who brokered a truce. At first I would meet her in secret for lunch or dinner in London. Then she accepted to meet my new partner over dinner. I think she probably told my father to get over it after that, because our relationship returned to normal soon after.

Not long afterwards I had a skiing accident. It happened in France but I was fixed up at a hospital a few miles from my parents. They came to see me every day, and taught me to play Killer Scrabble. It's like ordinary Scrabble, except viciously competitive. If you leave a triple word score open, you can be absolutely sure that your opponent will find a way to use it. Later I spent a few days convalescing at their home, sitting in their garden enjoying the spring sunshine. And playing Killer Scrabble in the evenings.

Both my parents were keen gardeners. My father did all the heavy work, digging the garden over every spring for planting, cutting the grass and so on. It was mostly my mother who took care of the actual plants, and everything else once my father had passed on. She loved her garden. It produced massive amounts of fruit, especially raspberries. We moved to that house when I was 9. The previous tenants had planted raspberry canes, which in the English climate propagate like weeds. They bear huge quantities of delicious fruit over a very short time, to the point where she couldn't even give it away. There were also blackberries, gooseberries, redcurrants and apples, as well as decorative flowers.

In 1988 my mother retired. Roha had changed completely by then. Harry Schmiedl had retired and the company was sold to a Manchester-based conglomerate. She had had enough of it all, and was very happy to leave it behind. She applied her organisational talent and drive to the local retired people's activities. When I was a small child, my parents had been one of the major forces behind the Pensioners' Pals, a kind of support group for the old dears on the estate. Now that she was one of their number, she organised cross-channel shopping trips and outings all over Britain. She kept that up until she was well into her 80s. She knew all the local coach operators and could haggle the best deals for a day trip to Calais for a busload of pensioners.

In 1991 we had a big family celebration for my father's 80th birthday. A year later he was seriously ill, and he passed away in February of 1993. I moved to France at the end of 1991, but got back to England often, and visited Romford every few weeks. There would be an excellent dinner of one of my childhood favourites, steak and kidney pie for example, a bottle of wine, a chat after dinner. And then a session of Killer Scrabble. We usually found time for three games, which we won in about equal measure. Right up to my very last visit in 2014, she never lost her touch. The routine stayed much the same when, from 1997 to 2001, I spent most weeks in my flat in London, and then after I moved to the US in 2001 - though the Scrabble sessions were sometimes cut short as I fell asleep from jetlag.

Always I slept in my old bedroom, the same place where I spent every night from 9 years old to 18. There was a bookcase beside the bed, with books that my father had bought with cigarette coupons before I was born - the Readers' Digest series of DIY companions, 100 Years in Pictures with its picture of the Tay Bridge Disaster (1879) that so impressed me as a child.

She visited us a couple of times in California, enjoying every minute of it. One moment I especially remember: we were flying back from San Luis Obispo in my plane, in and out of the tops of the clouds. It's a very spectacular feeling, almost like flying into a wall except it doesn't hurt. And my mother said, "When I was a little girl, I imagined that going to heaven would be like this". On her final visit we went to Yosemite, the first time she had been there, and to Mono Lake.

My mother was an avid reader throughout her life, though she bought very few books. The local public library was her resource, an extraordinary place with a far greater wealth of books than one would ever have expected. Every week she borrowed her limit of four books, often biographies, and read them all. During my childhood we had just one small bookcase in the living room containing the couple of dozen books that we owned - my Eagle Book of Trains and Beezer annuals for example - together with our library books. Children copy their parents, and I took it for granted to visit the library a couple of times a week and to read in every spare moment, including at the dinner table. One of the saddest things, when she became ill, was that she lost all interest in reading.

Our last Scrabble evening together was in June 2014. Not long afterwards, she fell and never recovered fully from the botched operations to repair her femur. It would be too sad to talk about anything that happened after that. Now she is at peace, and no doubt already telling the angels how to run the place.

Monday, 12 February 2018

My Mother - In Memoriam, Part 1

A few days ago my mother passed away. She was 89, and for a while had been steadily deteriorating following the all-too-common "old lady fall". That's not how any of us want to remember her, though.

My mother was an extraordinary woman, who starting from poverty and with little education, managed to make her way successfully in the man's world of business as a fearsome organiser and manager. She was also a wife and mother, who raised three children - her own two sons as well as our father's daughter by his first marriage - with love and devotion.

Shortly before her fall, she was persuaded to write a few pages about her early life. They stop rather abruptly, most likely because she wrote them in a single session and that is where the evening ran out. But it happens to be shortly before she met my father, in 1949 or so, so it makes a natural break.

I've written my own memories of her here.

Here is what she wrote.


My history
I must have come as a terrible surprise to my mother, as she'd already had two caesarean births and, in the year 1928, to have a third child by this method was decidedly chancy! However, obviously I arrived and we both survived, even though I understand my poor old Mum was decidedly the worse for wear. The two previous children, were my brother, who was twelve years older than me and my sister, three years older than me.
From what I was told, my mother must have suffered from what is now known as a 'clicky hip', but at that time she was told it was the result of tripping up a kerb when she was about two or three years old, and, having been confined to bed for a number of years, ended up with one leg considerably shorter than the other - and was what we could now call disabled, but was then called crippled. She eventually wore a high boot to make it possible to walk although, when I was younger, I can remember her walking in normal boots but on the toes of the shorter leg. Despite this, she lived what was then a normal life. Nowadays it would be considered the heights of deprivation. I only realized what the real problem was when my first granddaughter was born with a 'clicky hip', that is a dislocated hip, and I was asked if there was any history of it in the family which, of course, I denied and it was only after further cogitation that I realized it was the true diagnosis of my mother's problem. My granddaughter was treated as a baby and lives a normal healthy life, but my poor Mum was born before it was discovered it could be treated.
I believe we were then living in a small flat in a shared house when I was born, but when I was little, we moved to the sixth floor of a tenement block in the slums of the Borough of Southwark, just south of London Bridge and the City of London. We lived on the sixth floor, because it was cheaper. My mother used to take in other peoples' washing, which had to be washed, boiled in a copper, mangled (i.e. put through a wringer) dried and ironed, and she did this just to supplement the very poor wage that my Dad brought home. She even had to carry the washing up and down all those stairs (99 of them!). Just think, no washing machine, no dryer, no vacuum cleaner not even an electric iron; no labour saving aids at all. In addition to that, there were coal fires to heat the flat. Imagine the coalman having to deliver up all those stairs!

I realise that I haven't mentioned my father, but I suppose that's because he impinged very little on my early life. Remember, it was at the time when fathers were only expected to bring home a wage and all the other family necessities were the responsibility of the mother. In fact, my Dad was born in Glemsford in Suffolk and was very much a countryman. He came to London because of the difficulty of earning a living wage in the country, but I have no idea what he then took in the way of work. Nor do I know how he and my mother met, or when they were married. However, he was in the army during the first World War, 1914-1918 and, in 1916, my brother was born. Very little was paid to the wife and family by the army and it must have been very hard-going for my Mum. My Dad was wounded while in France fighting the Germans; he was hit by a sniper, but it wasn't sufficiently bad for him to be discharged. The discharge only happened at the end of the War and, as far as I know, he then went to work for John Gardner, a wholesale caterer, as a 'handyman'. He was still working there when he retired, at the age of 70, and he died from a heart attack the following year.
My sister was born in 1925 and during childhood we were never good friends, I suppose primarily because of the three years difference in age. However, later in life, we became much closer.
During my childhood, my sister and I were regular churchgoers and it was a high church, i.e. we had what was almost a Catholic service. The church was called All-Hallows, and the vicar from there used to visit my mother regularly. Because I was such a sickly child at one time he suggested to my mother that I would benefit from a visit to a country home run by Church authorities which he could arrange, and we eagerly accepted (bear in mind that I'd never had a holiday in my life). Then it was declared that it was obligatory that I should have a smallpox vaccination before going, so this was done, but then it turned
septic, and I was treated to hot fomentations for about six weeks, and I never got to the country. This was one of the big disappointments of young life. I also recollect having diphtheria when I was four years old - I was sent to an isolation hospital, Hither Green, and did not see any of my family until I was discharged four weeks later. By the time I left, I'd become accustomed to living in a large space (hospital ward) and my mother was very disappointed when, on arriving home, I said how small everything seemed.
One joy of my early life was Sundays. Sometimes on Sunday mornings, my brother would take my sister and me for walks; usually along the banks of the Thames, which were so close to us. At the time of my childhood, there was a beach by the Tower of London, and occasionally we went there, but usually we walked along the south bank. I can still vividly recall the smell of the brewery which was there and, in fact, when I went to live near Romford later in life, the smell when they were brewing at the brewery there reminded me of my childhood. One of the other joys of Sundays was to visit my father where he worked as a Sunday watchman (no security guards then) at the headquarters of John Gardner. We used to take a full Sunday dinner plate, wrapped in towels to keep it warm, so that he didn't miss out. While we were there, we could sometimes get into the cab of a lorry, and pretend to be driving it. But the biggest joy of all was to visit the bakery, which was packed with trays full of every sort of cake imaginable, certainly not the sort of cakes we had in our everyday lives. Then there was the charcuterie, with the smell of all sorts of meats. It was an adventure for us, and whose turn it was to take my Dad's dinner was highly contested - either my brother or my sister and I together.

I passed the 11-plus exam and was entitled to go to Grammar School, but my family couldn't afford the necessary books or uniform, so it was decided I would continue at secondary school, but the Second World War intervened in Septemer 1939 just before I was due to start. I wasn't evacuated, but most of the schoolchildren went and London schools closed down for a while. Those of us who were left in London used to spend our time collecting shrapnel from the anti-aircraft guns. When the schools re-opened we only had part-time because many teachers were still with the evacuees. Also, we couldn't use the whole school, as the AFS (Auxiliary Fire Service) had the ground floor for their use, The cookery room in the grounds of the school was used as a British Restaurant, which was another war-time organization, where you could get what were purported to be healthy and cheap meals. However, when they were short staffed, we girls were recruited to do jobs like peeling potatoes — it wasn't very educational. In fact, during my last few years at school, I received very little education, because (there being no school secretary at that time), the headmaster used me to collect registers, dinner money, etc and various other jobs. This would explain why my knowledge of history, geography and other subjects which are normally learned in secondary education as almost non-existent. However, as I shall explain later, I did continue learning after leaving school by going to evening classes after I'd finished work for the day.
At that time, the school leaving age was fourteen, and there was no question of continuing unless you were at grammar school. During the run-up to my birthday, we were given various options for interviews and one of them was for office work at the head office of Odeon Theatres, a company which owned a chain of cinemas, nation-wide. I was accepted and worked as a 'post-girl', which necessitated collecting post from various departments on five different floors, and mailing it either to the cinemas or to the film rental companies, and we had pigeon holes for all of them. However, I had been attending evening school for a shorthand, typing and English course and, because some of the girl employees were being called-up for the armed services, I was promoted to secretarial work at the age of fourteen years and nine months! I was working for a booking-clerk, i.e. we had to book the films for an area in the north-east of England and, although most of these depended on what was on the Odeon circuit, it involved booking short films to make up the programme time and, because the man I worked for was a bit idle, after I'd been working for him a few months, he left this to me — I must confess my preference was for cartoons. We had a supervisor who used to sit at the front of the office and she was very strict, with behaviour which wouldn't be tolerated in this day and age. She would call out things like "Miss Slater (that was me) you have too much lip-stick on today".
We had a good crowd of girls there and we used to go out together in the evenings, even though it was during the war and there were problems with bombs, etc., and we used to have some very good evenings together despite the fact that my mother insisted I should be home by 11.00pm. One of the problems was that, if there was an air raid warning in effect at the time I was travelling home, the part of the London underground which went under the river was closed down — so I used to get off at the north side of the river and run across one of the bridges until I reached the nearest station on the south side of the river; this despite the fact that anti-aircraft guns were firing and the shrapnel was falling all around me. This worried me far less than getting home late and my Mum telling me off.
There were, of course, many incidents during the war which stick in my memory. During the time I was still at school, my mother insisted that I accompany here to the tenement where we used to live, as they had a cellar which was purported to be bomb-proof. Unfortunately, one night while we were there, a land-mine was dropped at the other end of the tenements, and all the casualties were brought down to our shelter - so, after that, I wasn't made to go there any more. One of the worst sides of the shelter was that we slept six children on a mattress sideways on, and, when the nit-nurse visited our school, she discovered that I had lice in my hair. Oh, the shame of it! You can imagine how ruthlessly my mother got over this problem.
In the street outside our house there were so-called shelters built, but the only purpose they served was that, if a bomb dropped on the house, you wouldn't be buried in the debris. Nevertheless, once again I was made to go to one of them with my mother. The children in there were allowed to lay down, but there was no room for the mothers to sleep, so my Mum used to sit on a chair all night. One night she was knitting when a bomb was dropped very nearby, and a knitting needle went through the middle of her hand. However, that was the sum total of our families' injuries during the war.
One thing I haven't mentioned is my brother's problem. He was 22 years' old when war broke out, and for about six months had been treated by our doctor for a swelling in his knee and with hindsight, I realise that the doctor had been mistreating his problem.
Early in the war he was called up for the forces, and during his medical exam, it came to light that he was suffering from tuberculosis in his knee. The treatment for it at that time was to immobilise the affected limb, so he was sent to a sanatorium in Ascot, and his leg, from the hip down to his ankle was set in plaster, and he was bedridden for four or five years. After this time, it was proven that this 'treatment' was ineffective, so he was sent to St. Thomas's hospital in London to have his leg amputated. What a pity he hadn't been born later after penicillin was discovered.
After recovering from the operation, he was fitted with an artificial leg and, being very positive, he was determined to live as normal a life as possible. After working hard at this, he got a job in the Strand, mending Ronson lighters - then found himself a girl-friend, and they got married. Good luck to him, but all the travelling and the work proved to be too much for his body to cope with and, at the age of 33, he died from a heart attack.
Reverting to my own life, and when I was working for Odeon, one of the advantages of the job was that we had a free pass for any Odeon cinema for oneself and a friend, which we could use every week, and believe me we took advantage of it. Also, when the West End cinemas were in the last week of their run, we got free tickets for them also.
The second world war ended when I was in my seventeenth year, and, of course, there was great rejoicing. But, food and clothes rationing continued for many years after that and there was a great deal of disillusionment when soldiers were demobbed and realized that life was not as easy as they had thought while dreaming of coming home. There were many disappointments.
However, now seventeen years old, after working at Odeon for just over three years, and by then being a fully qualified secretary, I decided it was time to change to another job. The Company I chose (or which chose me) was called Rootes, who used to manufacture Hillman, Humber and Sunbeam-Talbot cars and Commer and Karrier commercial vehicles. I worked as secretary to the Advertising Manager. The office was on the mezzanine floor of a building in Piccadilly called Devonshire House, and our office overlooked Green Park, so it was a very pleasant situation. There were two types of girls working there in clerical and secretarial jobs — at one end were girls with a normal education and, at the other end, there were ‘debs', who thought they were the cats' whiskers and very much looked down on us. The two types never mixed at all. When I was washing my hands in the toilet room one day, I heard two of the debs discussing the fact that normal girls were not good workers, and I challenged them to try to type or shorthand quicker than me, but they didn't take me up on it.
During that time I met a boy called John Davis and eventually we became engaged to be married. Because his parents' marriage had broken down, he lived with his grandparents in quite a grand house in Putney, and their back garden overlooked the river. We were both really too young to settle down, and I broke off the engagement because of what happened one evening. We were at a boozy party and an argument broke out between John and one of his friends, which developed into a fight. John got hold of an empty bottle and smashed the neck of it to have a go at his friend. I knew then that, when he'd had too much to drink, he was liable to become violent and I was certainly not planning a marriage like that, having seen too much of it in "the buildings" when I was younger.