Tuesday, October 31, 2017

Tom Paxton

Tom Paxton, the American folk-singer, celebrates his 80th birthday today.

Like many other things, I became aware of him at a summer camp - I think it was in 1969. Someone introduced us to the song 'Lyndon Johnson told the nation' (or as we knew it, 'LBJ') which was a protest song about the Vietnam war. Probably the war meant very little to me as a 13 year old, and anyway LBJ was no longer president in July 1969. Even so, I was very struck by the song.

By chance, the first concert which I went to at Bristol's Colston Hall, around September/October 1969 was by Tom Paxton. I saw him again at the same location about six months later. I enjoyed the concerts, but he didn't play 'LBJ' (not really surprising, as by then the song had long passed its "sell by" date). I also bought a double lp of Paxton and his small group (pianist and bassist) live in concert somewhere; some of the songs I recognised from the concerts which I had attended and some were new.

At some stage in those days, I wrote a letter and sent it (how?) to Tom Paxton. To my surprise, I received a very warm reply. Of course, I have no idea where that letter is now. It was sent from Long Island, which means that it was before Paxton, his wife and their two daughters lived in Holland Park, London for about four years in the early 1970s as per Wikipedia. After the double lp, Paxton dropped off my radar, which is rather sad considering how much closer he was to me geographically.

I came across his name again in a book about record producer Tony Visconti, in which Visconti talks about his "live plus" recording technique - recording someone performing live, when they are more relaxed, then adding and/or replacing parts.

I admit that it's been a very long time since I've given TP a thought; no doubt he was quickly replaced by Richard Thompson as a song writer to emulate. But I'm pleased to see that he's still with us.

Even to this day, I still sing to myself the couplet "Rained again last night/The streets are slowly drying" after evening rain - this comes from the Paxton song "The things I notice now".

Sunday, October 22, 2017

A conditional choose-field trigger (for use in a procedure)

In special circumstances, in which the value of one feature is dependent upon another, one needs to create a conditional choose-field trigger. Here's a forced example: let's say that there is a database of computer parts; certain computer models can accept certain types of disk drive. So first the user chooses a computer model; the disk drives will be displayed according to the computer model.

In order to implement the statement 'certain computer models can accept certain types of disk drive', there has to be a join-table, one field of which will be the computer model and one will be the disk drive.

A normal choose-field trigger looks like this:
SELECT DES, CODE FROM TEST_DISKDRIVES WHERE CODE LIKE '%' ORDER BY 2;
This trigger would be placed under the parameter defined under the appropriate step in the procedure. Assuming that the key of the computer model chosen has been stored in the variable :$.CM, one might be tempted to write the following trigger:
SELECT TEST_DISKDRIVES.DES, TEST_DISKDRIVES.CODE FROM TEST_DISKDRIVES, TEST_MODEL2DRIVE WHERE TEST_DISKDRIVES.CODE LIKE '%' AND TEST_DISKDRIVES.ID = TEST_MODEL2DRIVE.DRIVE AND TEST_MODEL2DRIVE.MODEL = :$.CM ORDER BY 2;
Unfortunately this won't work. The trigger is unaware of the supposedly global variable, :$.CM. The solution which I found to this problem is to define a table with two fields, 'USER', which will hold the current user number (i.e. SQL.USER), and 'VALUE', which contains the value chosen (i.e. :$.CM). The trigger then becomes
SELECT TEST_DISKDRIVES.DES, TEST_DISKDRIVES.CODE FROM TEST_DISKDRIVES, TEST_MODEL2DRIVE, TEST_USERVALUES WHERE TEST_DISKDRIVES.CODE LIKE '%' AND TEST_DISKDRIVES.ID = TEST_MODEL2DRIVE.DRIVE AND TEST_MODEL2DRIVE.MODEL = TEST_USERVALUES.VALUE AND TEST_USERVALUES.USER = SQL.USER ORDER BY 2;
This does work! One won't find this documented anywhere. Obviously it isn't something which one needs every day but it's the solution to a specific problem.

Saturday, October 21, 2017

Sumptuous Saturday Seven - baked hake with potatoes and vegetables

We haven't had a blog entry on cooking for some time: not because I've stopped cooking, but because I have been rotating all the dishes which I know how to cook and have not tried something new. Well, today I tried a new dish - baked hake - which went down well.

The impetus for this dish came from a few days ago when we volunteered to cook a meal for another bereaved family on the kibbutz. I didn't realise at the time that I would be working late every day during the week (due to travelling commitments), so I had to choose a dish which would be easy for my wife to cook. In the end, she made a salad and my daughter made a vegetarian dish, so I didn't have to coach her. After finding a recipe, I decided to try it myself.

The first instruction had me slightly baffled: julienne the onions.  I sliced an onion into strips and fried them. The next instruction had me adding potato slices to the frying onions and continuing to cook; after a minute or so, I realised that this was not a good idea as the potatoes were either sticking to the pan or not getting cooked at all. So I added a few cups of boiling water and boiled the potatoes. When making mashed potatoes, I cook for fifteen minutes, so I decided to remove the potatoes after only ten minutes, thus partially cooking them but leaving them whole.

I also decided to cook vegetables with the fish and potatoes, so I chopped some courgettes and carrots, cooking them in the microwave for ten minutes. I then placed a sheet of baking paper on the oven pan, placed the potatoes on the paper, then layered the fish and covered them with the vegetables. I sprinkled parsley on top of the fish, sprinkled salt and doused the food with olive oil (with rather more than the one tablespoon mentioned in the recipe; at the moment we have a bottle of oil with a larger opening than usual so I am using more oil than I need). I cooked the dish in the oven for thirty minutes at 150 degrees C.

The result was surprisingly good, although I thought it a little bland. No one had any criticism. I think that next time I will add some tomatoes to the vegetable layer - a little bit of acid will help the taste.


Saturday, October 14, 2017

The seven stage model for developing enhancements

My previous DBA post proposed the following framework for developing enhancements:

  1. Identify a misfit.
  2. Determine which stakeholders would gain from resolving this misfit: there will always be one group of stakeholders who benefit whilst entering data, but there should also be at least one group of stakeholders who benefit from retrieving improved data.
  3. Propose a solution which benefits the maximum number of stakeholders. The solution should consider dimensions such as improved data visibility, savings in user time and direct monetary savings.
  4. Enlist the support of all stakeholders connected to the enhancement.
  5. Implement the enhancement.
  6. Train the stakeholders in the use of the enhancement (in both the input and output stages).
  7. Evaluate the benefits obtained after the event with respect to those stated in stage 3.
I included this framework in my research proposal, writing This model will henceforth be known as the 'seven stage model for developing enhancements', aka SSMDE. After stage 7, evaluation, there are three options, depending on the evaluation: the enhancement may either be put into use, discarded or refined (returning to stage 5 in the model). I also developed new research questions and even changed the title of the research proposal, which is now Evaluating a framework for the creation of successful enhancements to an ERP system.

When walking the dog - always a good time for thinking - my mind turned to a training session which is going to be held in a few days, when I will be explaining to one group of stakeholders a new enhancement. A select group - primarily the CEO, the vice president for development, the purchasing manager and myself - have been discussing this enhancement for several months (the protracted time period is due to the CEO and VP having other commitments) and now is the time to show one group of users how to use the system, which replaces an ad hoc system of paper notes.

It occurs to me that we didn't carry out stage 4 of SSMDE. As hinted above, there are two major groups of stakeholders: those that enter the data (in this case, sales reps) and those that retrieve the data (purchasing). Training for the purchasing people has already taken place; the training session in a few days time will be with the sales reps. We haven't informed them of the coming change - in other words, we haven't enlisted them. It doesn't matter how technically good the enhancement is: it's a failure if no one uses it.

There was a similar situation a few months ago, when together with the CEO I developed a system for recording information about upcoming sales within the ERP system, as opposed to a manual system based on spreadsheets. The training session was so difficult - even acrimonious - that I informed several managers that I was not prepared to teach such sessions in the future. As  a result, the CEO said that he would be present in such sessions: he will take the heat, not me. As it happens, as that enhancement was activated automatically, it became adopted fairly quickly and so can be defined as successful.

Getting back to SSMDE, it would seem at the moment that stage 4 is essential to the success of an enhancement. There's no problem when there is only one group of stakeholders involved, but frequently - at least, in my experience - major enhancements are developed without the enlistment of one group of stakeholders. This lack of enlistment is liable to lead to the enhancement not being adopted and thus failing.

Whilst the research proposal contains a paragraph which refers to the practice of 'parachuting' enhancements into use without the prior knowledge and involvement of at least one group of stakeholders, it was written many months ago, before the development of SSMDE. I should make this clearer in the next version of the research proposal.

Thursday, October 12, 2017

Madam Secretary

I have referred to this 'government procedural' tv series a few times over the years. I knew that a fourth series had been commissioned but I didn't know when it was to be screened. Imagine my delight when I discovered yesterday that the opening episode of the fourth series was to be broadcast that very same night (i.e. yesterday evening, 11 Oct 2017) in Israel.

Surfing the net this morning, I read that 'Madam Secretary is set to premiere its fourth season on 8 October 2017'. In other words, we in Israel are seeing a programme only three days after its screening in USA. Very up-to-date!

My opinion about the series hasn't changed: very good (but not excellent). The scriptwriters must have had a fine time, writing extremely moral and uplifting lines for the eponymous secretary. I am sure that this is not what happens in real life.

Wednesday, October 11, 2017

Research questions

I wrote a few weeks ago that there seems to be mutual incomprehension between my doctoral mentor and myself. I added material to my research proposal which was obliquely suggested by my mentor; he wrote back writing (amongst other things) that something "is reinforced by your having ten research questions when one is usually sufficient and best". Thinking about this, I realise that what I have noted as "the research questions" (i.e. what the research is supposed to answer) are actually the questions which I intend to ask the participants.

Here are those questions:
  1. What are examples of gaps between existing and desired functionality ("misfits")?
  2. How do organisations enhance their ERP systems in order to overcome those misfits?
  3. Is there any mechanism for examining the justifications for enhancements?
  4. Is an enhancement's success dependent on who proposed it?
  5. How are the enhancements authorised?
  6. Are enhancements added in a systematic (as opposed to ad hoc) fashion?
  7. How much time is required for developing those enhancements?
  8. How successful are the enhancements and how is this success measured?
  9. What are the economic benefits of those enhancements?
  10. How are users trained to use the enhancements?
I have read a recent doctoral thesis (Badewi, 2016) entitled "Investigating Benefits Realisation Process for ERP Systems" (sic) which tries to develop a benefit realization road map whereby organisations can realize the maximum potential of their ERP systems  (it's curious that the thesis uses British spelling for 'organisation' but American spelling for 'realize', but then the grammar of this thesis is all over the place). The research question is "How organisations can realise the maximum benefits from the ERP system?" Apart from the fact that the second and third words should be reversed, I am starting from the position that enhancements are the way that organisations realise the benefits, and so I have answered that question before I even begin.

I am less interested in developing a mechanism for evaluating enhancements (although my mentor seems very keen on this) and more concerned with the enhancements themselves. The interrogative word seems to be very important - the above question begins with "How", not "is" nor "can", which can be answered either yes or no. 

So one possible research question would be How can an organisation develop a framework for creating successful enhancements to their ERP system? This assumes that there are means of assessing enhancements; this is already listed as one of the research's objectives. This suggests that I would have to develop a framework, which is not particularly in line with my interests, but would be more academically sound.

Presumably the framework would be something like:
  1. Identify a misfit.
  2. Determine which stakeholders would gain from resolving this misfit: there will always be one group of stakeholders who benefit whilst entering data, but there should also be at least one group of stakeholders who benefit from retrieving improved data.
  3. Propose a solution which benefits the maximum number of stakeholders. The solution should consider dimensions such as improved data visibility, savings in user time and direct monetary savings.
  4. Enlist the support of all stakeholders connected to the enhancement.
  5. Implement the enhancement.
  6. Train the stakeholders in the use of the enhancement (in both the input and output stages).
  7. Evaluate the benefits obtained after the event with respect to those stated in stage 3. 
It would be great if the above methodology could be reduced to a catchy acronym; IDPEITE doesn't really roll off the tongue. 

Should I change the direction of the research proposal to use the above, the research methodology which I have proposed so far - grounded theory - goes out of the window. One of the important tenets of grounded theory is that there be no a priori theory; to my surprise, I have now delineated a methodology in advance! A qualitative approach is still possible, asking how organisations carry out each stage in the methodology. What worries me at the moment is that proposing such a methodology in advance means that the research would be looking for support; I'm not phrasing this well (most of this blog is me 'thinking on the page'), but it's almost a hypothesis based theory. Or ... the above theory could be developed on the basis of the user interviews.

I will leave this entry as it is, but it is clear (at least to me) that my next step is reviewing doctoral theses which propose a theory and seeing which methodology they use.

Tuesday, October 10, 2017

Hersonissos

I confess: I was one of the 2-3 million Israelis who took advantage of the extended holiday period and nipped abroad for a long weekend. This was very much a last minute event; we had asked our son what he wanted for his 25th birthday: originally this was going to be a mobile computer but then he changed his mind and asked for a few days abroad. Our agent found a reasonably cheap package deal to Crete, staying in Hersonissos, but something went wrong with the hotels, so we ended up booking our own hotel.

Hersonissos is a town on the northern coast of Crete, about half an hour away from the airport of Heraklion. There isn't that much to do there, which makes it an ideal destination for a long weekend, but not a good one for a longer stay. With hindsight, there is no real reason why we had to stay there once the package deal broke down. We chose to stay in the Infinity Blue boutique hotel which was a very nice place to stay - very close to the beach, beautifully designed, good breakfasts and helpful staff.


We arrived at about 12 pm on Friday: after some unpacking, we went to look for a place to eat. Coming out of the hotel, we turned right, which turned out to be a mistake - the sea was on the left. We found our way to a dusty street which we took to be the main road of Hersonissos - obviously this was hunger talking. It seems that every third shop was hiring out vehicles, every third shop was a tourist agency and those left over were gift shops. After eating, we returned to the hotel to get organised better. I went out for a walk, turning left, and discovered not only the beach but also the promenade from the Port of Hersonissos. There were plenty of people about, but it wasn't particularly crowded. After having a mint chocolate ice cream at one stand (good, but not as good as Italy), I returned to the hotel to relay my news. In the evening, we ate in the hotel's dining room, where a buffet meal with many options is served. This costs 10 euro per head, which is quite reasonable, although all drinks (including water) are extra.


The next morning I woke early, so I went out and filmed the empty streets, getting a better idea of how everything was laid out. After a very full breakfast, we rode on the 'tourist train', which makes a big circuit around Hersonissos and out to outlying hotels and villages. The ride lasts nearly two hours, which is a bit too long, although this is in order to include as many stopping points as possible (some are quite some way out of town). We discovered what is the main 'strip' of Hersonissos, not too far from the promenade, but not particularly interesting. I had filmed a great deal of our trip, which included being passed by a lorry in a very narrow space, but when I came to look at the footage, it turned out that I had missed a press on the record button. This means that I stopped recording when I wanted to start, and started when I wanted to stop. As a result, I filmed the inside of my bag very thoroughly. No wonder the camera was very hot.


We had a fish lunch at one of the beach-side restaurants which took forever to be cooked. The meal was good but not astounding. After this, my son and wife wanted to go to the beach, although I demurred as I wasn't feeling too well (I think that the train ride might have dehydrated me). After a lay-down, I too went to the beach, when it wasn't too hot and even went into the sea. The water was cold, but more annoying was the sea floor, which was rocky and treacherous. I slipped on it a few times before immersing myself and swimming a little; I found it easier to swim into the sea than return to the beach. In the evening, we ate again in the hotel restaurant - quieter and more sympathetic than the beach restaurants. The dining room is on the top of the hotel and allowed a good view of the neighbourhood, which is how we discovered that the next door hotel was having a Greek folklore evening. We were able to watch the dancing from our table.


On the third morning, we set out to buy souvenirs; having completed this task, we were then set upon by a series of buggies roaring out from a garage. My son had wanted to hire a buggy but we had demurred as he wouldn't have known where to go and could possibly get lost (he thought differently). This sight inspired us to enter the rental shop and enquire about the possibility of a guide; in two seconds, they arranged a trip for us from 14:00-16:30 with a guide. The buggies have only two seats, which should mean that we would need two buggies, but I knew that all the bumping around would prevent me from enjoying the trip and so I opted out. While the other half of the family rode around the hills behind Hersonissos, I had a massage in the hotel spa. They enjoyed themselves much more than I did!

In the evening, we once again ate in the hotel: tonight we had fish and chips! Possibly in emulation of the other hotels, we also had live entertainment, with a trio (singer, guitarist and drums) playing a variety of songs. This was mildly enjoyable, the minor problem being that I could barely make out a word that the singer sang. The major problem was that the drummer had a very inappropriate crash cymbal which he played every four bars; the sustain on the crash was quite long and basically ruined the sound. My wife concurred. I'm surprised that the musicians seemed oblivious to this.

On the final morning, we took a taxi to the 'centre' of Hersonissos, which was a mistake. We were there too early and the shops had yet to open. We decided to return to the beach area, so we walked down a road - and I realised that I knew exactly where we were: at the end of the walk which I had taken the first day. With serendipity, there was a shop selling children's clothing on that small road, so we waited a few minutes for the shop to open then found some dresses for our grand-daughter. We then stopped at one of the shops which sells t-shirts "with your own design", so we had a white t-shirt made with a picture of our grand-daughter. I wonder how she will react to this.

Eventually we left the hotel just after 12 pm; a short taxi ride deposited us back in the Heraklion airport. After waiting a while, we were eventually processed; just after passport control, the checkers found the raki and olive oil which my wife had bought earlier in the morning in her hand luggage - forbidden! This was swiftly thrown away. In the duty free shop, we bought similar items, although more expensive. This is a lesson to be learned: do not store liquids in one's hand luggage!!!!

The flight to Ben Gurion lasted about an hour and a half, but it took us even longer to get home. First, half of the suitcases took a long time to emerge on the carousel; secondly, my son had problems in getting to the remote car-park where we had parked our car on Friday morning. Finally, there was a traffic jam on the way to Jerusalem. Eventually we got home.

Now we're unpacking and I am writing this belated blog entry.

Thursday, October 05, 2017

A kibbutz day

I didn't work yesterday, as the evening was the first night of the Succot festival - office workers don't normally work on such days; the day is deducted from our holidays. Even so, I was up at 5:30 am, walked the dog and went to the kibbutz mini-market to buy some dairy products; two people said how much they enjoyed my song at the Yom Kippur evening.

After that, I went to the Occupational Psychologist, where I worked for a few hours programming bonuses into their 'ERP' program. I had programmed a module which allows a percentage bonus provided that certain criteria had been met; unfortunately the OP promised a psychologist a bonus which couldn't be expressed as a percentage (two different activities having different increases). So I figured out a way of allowing this and then programmed what was necessary. I had problems checking what I had written due to a rather stupid mistake; once that was corrected, I verified that my code was correct.

Then it was to the kibbutz graveyard for the funeral of a member aged 87. We had worked in the same office during the 90s and had remained in contact ever since, although in the past few months his illness had prevented him getting about. I had heard the news the day before and immediately wrote a small eulogy which I hoped I would be able to read at the funeral; I have never done this before, mainly because I've never been that close - or felt that much contact - with the deceased. When we got to the graveyard, I informed the organiser - the man who reads whatever prayers are said and tells the life story of the deceased - that I wanted to speak; he was only too pleased. I discovered why later on: after the immediate family spoke, another elderly kibbutz member rambled for a while, then I was 'on'. My short eulogy was very well received. And that was it, apart from one distant relative. Thinking about it later, I was quite surprised at how few people outside of the family who spoke. Several more people approached me before the funeral, saying how much they enjoyed my song (see first paragraph).

The sons and daughter were very touched by what I had to said and thanked me after the funeral. I have just returned from the traditional condolence visit and they thanked me once more, even though I protested that I had said virtually nothing.

As mentioned at the beginning, the evening was the first evening of Succot, with a short ceremony, a communal meal and light activities planned. We received a message in the morning that the bereaved family wanted the evening to take place as planned, although as a mark of respect, the jugglers have been postponed until Friday. So we sat on the lawn outside of the kibbutz dining room - once a frequent activity, now sadly rare - and waited for the ceremony to begin.

There was a small musical group - acoustic guitar, tenor recorder and three singers - who sang three or four songs throughout the ceremony. They were passable, but wearing my record producer's hat, I felt that there was so much that they could do to improve their performance with only a little effort. The guitarist was so-so; he should learn how to play with syncopation. The recordist is very good (she's a music therapist) but she played the tunes along with the singers which is a total waste! She could have played an introduction, then played fills when the singers weren't singing. And if she had to play when the singers sung, then at least she should have played a harmony line instead of doubling the tune. The singers weren't bad (they weren't wonderful either) and every now and then one even sang harmonies; this could have been timed better to make the harmonies stand out (for example, singing the first chorus in unison then singing harmonies on the second chorus, or singing one line in unison followed by one line in harmony). The problem is how to tell them. I don't come into contact with any of them so it's a bit difficult to even get to point of telling them how to improve. 

A few more people told me how much they enjoyed my song and told me how well I play and sing. Doesn't anyone realise that I didn't play a note? The computer made the music, although I wrote the notes. I don't remember many problems when singing, although I did correct the singing via software. I also added a harmony via software on one line. I wonder whether any of the people mentioned in the previous paragraph were at the Yom Kippur evening; they would have heard that I know how to arrange a song. I think that I will make a copy of my last cd for one of the singers - he's been abroad for several years but was here at the end of 2013 and said something complementary to me.

Wednesday, October 04, 2017

Another end to headaches

I once wrote a blog entry entitled 'An end to headaches', which was somewhat presumptuous as this year I have suffered from a large number of headaches. It got to the stage that I would take half a pill of sumatriptan at 9 am every morning in order to treat the headache which was just starting (it's very strange but I could set my clock by this). So I went to my doctor and asked for prophylactic (i.e. preventative) treatment.

At first I was prescribed propranolol, which is the primary medication used to prevent migraine. The dosage was to be 80 mg slow release per day, but the doctor initially prescribed  a smaller dosage of 10 mg three times a day in order to acclimatise me to the medication, which is a beta-blocker and leads to reduced pulse and/or blood pressure. I lasted three days on this regime: on the third, I was so tired and apathetic that I realised that I couldn't continue with it.

It took a month and another spate of concentrated migraines for me to return to the doctor. This time he prescribed a medication which is not used so much these days: amitryptiline. The wiki entry begins "[this] is a medicine used to treat a number of mental illnesses", which sounds very daunting. It is prescribed in dosages of 250 mg/day when used for treating mental illness. My dosage is a mere 10 mg/day. The major side effect is that my mouth gets dry during the morning; apparently it can also lead to weight increase, and it is true that I seem to be hungry all the time (about half a kilo has been added to my weight). Somewhere I read that 'success in treating migraines' means that the incidence is decreased by 50%, which is not very encouraging, but it's better than nothing.

The first week with this medication didn't bring any improvement (this would have been the last week in August); the next week I was ill with a presumed viral infection - I never get migraines when this happens. And since then ... nothing. I had a slight headache last Thursday but it only started in the evening and didn't affect me very much.

So it really does seem that migraines are a thing of the past. I'm hoping that this is the way things will be in the future. Of course, whilst writing this, I felt a familiar tickle at the back of my head, so I think I'll take half a sumatripan just to be safe.

Tuesday, October 03, 2017

The 'Check-field' trigger

To quote the documentation, the 'check-field' trigger performs verification checks on a value specified for a form column, and so potentially can be very useful. In forms which are concerned with sales, the status of a given part is checked to see that the 'sellflag' is marked, i.e. the part can be sold to customers. In one specific form, no such check was performed and it was my job to define the required trigger.

There is one very important rule to remember for 'check-field' triggers: do not rely on any form variables! This is because the field has yet to be exited and so other fields have yet to receive any values. An example might help: as soon as a valid part number has been entered, other fields such as price and the internal part number itself get their values. But these fields are empty when 'check-field' is operating.

So how does one get the value of the current field? One uses the special variable :$.@. Thus the trigger which I finally wrote last night looks like this:
ERRMSG 9000 FROM PARTSTATS, PART WHERE PARTSTATS.PARTSTAT = PART.PARTSTAT AND PARTSTATS.SELLFLAG <> 'Y' AND PART.PARTNAME = :$.@;
I use the concise syntax ('errmsg X from ...') which I discussed here.