Friday, May 26, 2017

Aroma AG-03M Rechargable Cube Guitar Amplifier

A 5 watt guitar amplifier sized 10X14X5 cm, with an onboard rechargeable battery and a clip which allows one to attach the amplifier to one's belt, and only costing $33, including postage? Sounds too good to be true - but there is such a device - the Aroma AG-03M Rechargable Cube Guitar Amplifier. At that price, one can't go wrong, even if the amplifier is a dud.


I ordered this device from DX in the middle of April, and it arrived the other day. Today I brought it home and tried it out. First, the battery had to be charged (with a USB cable, exactly like a mobile phone) - the documentation says that the initial charge should take six hours, but it seemed to be complete after about two.

So I turned it on, connected a guitar - and had my ears blown out. Once I turned off the distortion (this is the default setting), the volume was reduced greatly - a bit too quiet. But otherwise the mini-amplifier seemed to be fine, and certainly value for money. This makes it a fine practice amp (especially as one can move around with it) and maybe a busking amp, but not a performance amp.

As with all devices these days, it is possible to add a memory card. I naively thought that I could record onto the card, but it would seem that the card's function is to play stored songs back through the amp - i.e. turn it into an mp3 player. I don't have a spare memory card at the moment to verify this, but it would seem that one can't play back songs and amplify guitar at the same time - a bad design decision as this functionality would have improved the ability to practice along with music. There is a microphone socket (3.5mm) which presumably works in parallel with the guitar.

I wish I had something like this 45 years ago.

Incidentally, talking about guitars ... I was in a guitar shop the other day, in order to buy pegs from which I can hang guitars on the wall. There was a beautiful 12 string guitar there, apparently a Fender CD-160SE 12-String V-2: this has a good sound and is smaller than I had expected - very comfortable to play. As with all guitars these days, it comes with an onboard pre-amp, which allows one to connect the output to an amplifier (or effects). The price is a bit expensive for the moment (around $800), but I'm hoping to buy it for my birthday in a few months, especially if I can spread the cost over 10 payments (as I did for the guitar pegs and the piano chair that we bought).

Monday, May 22, 2017

Puzzle from the Guardian

This puzzle comes from here:

In each of the four sectors of the outer circle, there is a two-digit number which is equal to the sum of the three numbers at the corners of its sector. The numbers in the individual circles can only be 1 to 9 and each number can be used only once. One number has been provided to get you started. Find the remaining four numbers


Friday, May 19, 2017

In blissful company

The first inkling, like many others, came from the seminal Island Records compilation, "Nice enough to eat". After the rage, fury and musical precision of King Crimson had shattered into a thousand pieces, a jaunty bass riff took centre stage. The riff was taken up by other instruments, turned into the backing for a vocal section, leading into a long trippy guitar solo, followed by a chanting section and then returning to close the song. This was "Gungamai" by Quintessence, an ode to the river Ganges. The British underground meets the Indian sound. Listening to this song now, I realise that it is based on one chord.

In those days (1970), it could be very hard to find out about groups, especially the more obscure ones. One was limited to what appeared in the music papers - in those days, only the New Musical Express and Melody Maker (Sounds joined to make a triumvirate in 1971). It would never have occurred to me to request a press package from the record company. So Quintessence were very much an unknown quality.

Intrigued by this song, I found a single by Quintessence, entitled "Notting Hill Gate", whose lyrics seemed to be "We're getting it straight in Notting Hill Gate, we all sit around and meditate". When I found myself with a few hours spare in London in July 1970, I duly headed to Notting Hill Gate, trying to find this mysterious group but did not succeed. In the following year, I saw the group in the Victoria Rooms in Bristol and was so moved by the experience that I wrote a gushing letter to either their management or to the record company. I was even more moved when the letter appeared in Melody Maker the following week - betrayed, because the letter had been transferred to a third party, elated because I had a letter published in MM.

I bought the second album by Quintessence, which had a very elaborate sleeve. This record impressed me less than their opening salvo, as lyrically it was too religious and musically it was less exciting. My enthusiasm waned demonstrably when I heard the title track from their third album, "Dive Deep", and so all things Quintessence dropped from my radar.

A few years ago, I began trying to track down the music of my youth which fell outside of the axes of Fairport, Van der Graaf and Crimso. A surprise find yielded the first two albums of Quintessence, which is when I discovered that the version of "Notting Hill Gate" which I remembered was a different - shorter and poppier - arrangement to the one which appeared on their first album, "In blissful company". These days, I find that first album more interesting that the second.

It seems that I am not alone in my renewed interest in Quintessence: a few months ago, the online music magazine Siiye published an article about the group which was very interesting, as I never knew much of their background. Following that article, another website announced that their first three Island albums would be repackaged as a double cd, and sold along with a 48 page booklet in the near future. That near future is now and the double cd has landed.

The booklet - whilst informative to a certain extent, giving a potted history of their early days - is almost unreadable, being printed in white letters on a multicoloured background. The credits page is printed in black, but on a pink background, making it also almost illegible.

And the sound ... well, I have been listening to these albums in the past few years. The rhythm guitar, when isolated, is embarrassing in its sound, but fortunately it is kept mainly in the background. The real blooper is the opening track, "Giants", which starts with the rhythm guitar playing barre chords up and down the neck, followed by a cringe-inducing vocal, "Once there were giants". Fortunately, everything picks up after that; but why start with what might seem to be the weakest track?

The compilation, consisting of their three Island lps along with both sides of the afore-mentioned single, is called "Move into the light" - the name of the song on the b-side of NHG.

Monday, May 15, 2017

An unintended prophesy comes true

I am rereading Neal Stephenson's "Cryptonomicon" once again. I am 49% through the book, if anyone is interested, in a chapter entitled "Hoard". Randy Waterhouse is in a plane, flying from Manila to California. There is a paragraph which reads like the following (somewhat abridged, as I have to type this) ...

There are three messages from Kia, Epiphyte's only actual employee, the administrative assistant for the whole company .... It is some sort of a federal regulation that nascent high-tech companies ... must hire topologically enhanced twenty year olds with names that sound like new models of cars.

Obviously the above is another of Stephenson's jokes, but I don't think that he expected that one day there really would be a type of car called 'Kia'.

Wednesday, May 10, 2017

DCI Banks - Wednesday's child

I wrote a few days ago about watching the televised version of this story. I had only seen the first half when I wrote - I was in for a surprise in the second half, when the story became almost a complete reversal of the original novel. It is clear that the relationship between the written word and the dramatised word is fast approaching zero.

Naturally, I had to read the novel again, especially as I remembered it as being one of the best of the early Banks novels - an arbitrary line drawn by the arrival of Annie Cabbot. This book features Superintendent Gristhorpe (Banks' superior) in a more active role than usual. It also mentions towards the beginning how Gristhorpe, as a young uniformed police officer, took parts in searches for the victims of the Moors Murders, and how he heard tapes of the perpetrators torturing children to the sound of carols - which turned him permanently off music from then on, always pretending to be tone deaf.

Which makes it very strange to read at the beginning of chapter 12 that "Besides, Gristhorpe was tone deaf; for all his learning, he couldn't appreciate music". This is a sentence which must have been written in a reflex manner; it's always something that comes up when Gristhorpe is mentioned. But as we know - having already read so at the beginning of the book - Gristhorpe is not tone deaf, he just does not like listening to music. This is a sentence which should have been removed by a sharp editor.

Tuesday, May 09, 2017

Zingers

I warn in advance that this blog isn't going to mean much to anybody except myself, but it's therapeutic to get the following off my chest....

By chance, "You've got mail" was shown once again on the television of Saturday; I came home from walking the dog in the late afternoon and found my wife watching it. There's a scene early on, after Meg Ryan meets Tom Hanks at a party and discovers who he is, when Hanks writes the following: Wouldn't it be wonderful if I could pass all my zingers to you and then I would never behave badly and you could behave badly all the time and we'd both be happy? On the other hand, I must warn you that when you finally have the pleasure of saying the thing you mean to say at the moment you mean to say it, remorse inevitably follows.

I haven't had the dubious pleasure of saying the thing you mean to say at the moment you mean to say it, but I did write an email to a fellow worker this morning saying that I am not prepared to compromise my principles by omitting data from a report. I also wrote that I was saddened by the amount of energy that this worker has spent trying to persuade me, and that this energy would have been put to better use in correcting the data which she doesn't want displayed.

Don't people understand that a principle of reviewing data is that everything has to be shown, warts and all? For the minute one sweeps bad data under the carpet, one loses the ability to see that something is wrong and then that something will never be corrected.

What's sad about this entire episode is that I feel terrible inside. And that's ironic: I feel bad because I did the moral thing and stood by my principles. I don't feel remorse at having written what I wrote, but I feel very uncomfortable and not sure that I can continue working with such people.

My manager (who is the CFO) supports me, but she's not the one who is fighting the battles in the trenches. I shouldn't have to fight at all.

Saturday, May 06, 2017

Television detectives

I don't know why the British have a fascination with police programmes on television. As a child, I can recall watching "Z-cars", which was followed by "Softly softly". There was a tendency towards American shows during the 70s ("Starsky and Hutch" was required viewing), but the trend reverted to British shows during the 80s and 90s ('Morse', 'A touch of Frost').

At the moment, I am watching three different police programmes on television. 'Line of duty' - to which I have referred in the past - is now in its fourth season and is being shown here about one month after being shown in Britain, which is remarkable. This programme differs from others in that it shows policemen investigating policemen, as opposed to policemen investigating crimes. This is an excellent series, and one never knows what is going to happen. Apparently the show is scheduled for another two series.

Second up is 'Unforgotten', which is in its second series. This shows a unit which deals with cold crimes - murders committed thirty plus years ago. This is much more a drama series than a police procedural and as such is very well written. But looking beyond the story itself, one sees several items which deserve explanation. Such a unit in real life would normally be where unwanted or burned out officers are placed; the officers in this unit are young and good at their job (the researchers are exceedingly good).

The deputy chief has even been promoted from Detective Sergeant to Detective Inspector between the first and second seasons, but no explanation - or celebration - was mentioned. The home life of the deputy chief is also unexplained: he has two teenage daughters but no wife. It's not clear whether he is a widower or abandoned by his wife; if the latter, then it seems strange that a very busy detective would win custody - unless, of course, we only see his daughters when they are with him. But this doesn't seem to be the case. A good rule of drama is "don't add unnecessary complications": whilst these scenes are supposed to make the character more interesting, they also throw up unanswerable questions.

The third programme, which has just started being shown again, is the third series of my old friend, DCI Banks. I have carped enough about this programme in the past, but I won't be returning to any of my old criticisms. The story in the opening episodes is based on a one line description of one of the better earlier Banks books, but otherwise is a completely new invention. Thus I don't know where the story is going, and instead of complaining about how the original has been adulterated, I can watch the show with new eyes. My earlier complaint about the apparent continual stroppiness of the titular character has been answered: he is now much more calm, but the stroppiness has been transferred onto his subordinates, specifically DI Morton (a character invented for the screen presumably because the actress playing DS Annie Cabbot went on maternity leave) and DS Cabbot. I doubt very much whether police officers could continue to behave the way that DI Morton does without being reprimanded. As opposed to the other programmes mentioned here - and as opposed to the books - I can't see any special characteristic which defines this programme and differentiates it from others. This lack of differentiation lowers its value.

Thursday, May 04, 2017

Priority tip: default parameter values

Procedural (and report) parameters in Priority have an admirable quality: they are maintained from invocation to invocation. Thus if I run a report which requires a date parameter and I enter today's date, that date will appear automatically the next time that I run the report. Most of the time, this is a good idea, but sometimes it is better to have predefined parameters - for example, a report will run on dates from 'the beginning of the previous month' until 'the end of the previous month'.

I am not aware of a method to do this in a standalone report, but it is simple to do this in a procedure: a parameter is defined with a default value in an INPUT step. In a second step (probably SQLI, but also INPUT: there seems to be little difference), the parameter is referenced again, marking its type as 'd' in the 'extensions' subform of the procedure step. This 'd' tells the report engine to use the default value provided and not the last used value.

This technique is fine for date and numbers, but someone recently asked me to prepare a report where the customer number has a default value. Customer numbers of course are stored in the customers table, so defining the parameter would not be the same as defining an unbound date or number. Originally, I had no idea how the request could be successfully answered, but then a few days later, I stumbled on the standard 'delete parts' procedure. This procedure presents an interface similar to the search bar of a web browser: the words 'enter search here' (or similar) are displayed automatically, but these words disappear when one starts typing. In the same manner, the 'delete parts' procedure presents the standard screen for entering a parameter, but displays 'enter part number' in the space for the part number. This is the technique which can be appropriated.

Again, the process has two steps: in the first step, a variable (NOT a parameter) is given a default value, e.g.
:DEFAULT = '11143';
Then in the screen where one defines the parameter for choosing customers, one enters in the 'value' field of the parameter the predefined value :DEFAULT. One also has to enter the 'extensions' subform and mark the parameter with type 'd'. The result of the above is that the customer number '11143' will be displayed automatically although it can be overwritten.


The above is not just an academic exercise: someone else complained that a given report wouldn't work - even though it worked perfectly for me (as usual). This is a clear sign of a problem with one of the parameters being passed to the report: it transpires that I listed a range of suppliers whereas this person left the suppliers field empty. I can now improve this report with the 'default parameter from a table' technique by giving the suppliers field a default value to ensure that the report always works (unless someone perversely deletes that default value from an invocation).

Sunday, April 30, 2017

April 1977

Continuing my irregular series of blogs about events which happened 40 years ago (before I completely forget them), I am going to write about April 1977. This was the beginning of a bad period for me which lasted several months. The seeds had been sown a few months previously, which is where I will start. 

As I have written several times before, my university course was known as a 'sandwich' course: study for a year, work in industry for six months, study for a year, work in industry for six months then study for a final year. In the summer of 1976, the audacious idea came to me that I could spend my second industrial period (due to start in April/May 1977) in a food manufacturing plant in the north of Israel. I had made advances to this plant and the idea seemed feasible - I would probably be researching avocados. Permission to carry this idea out was dependent on my university (situated in London): two visits were to be made by lecturers during the industrial period. For a while, the university considered this, but at some time - maybe February, maybe March - I was told that the university could not afford to send lecturers to visit me in Israel and that I would have to do my second period of industrial training in or around London.

Whilst externally I recognised the wisdom/necessity of this decision, internally I was very upset. I resolved to compensate myself by going to Israel the day after my final exam (we had exams in March that year), returning the day before I was due to start work at an analytical laboratory not far from the university (obviously, the job had been set up fairly quickly and before the exams). I could just squeeze in a month.

That month included both the Passover holiday and Independence Day. I decided to spend two weeks at my 'new' kibbutz, Mishmar David, where I had spent time the previous summer and which was to be my location upon emigrating to Israel in 1978, and two weeks at my 'old' kibbutz, Bet Ha'emek. I don't remember much about the first two weeks; the second two weeks were very emotional. At the end of my time, I returned to Mishmar David for another day, as the kibbutz is close to the airport. 

On the morning of my return flight to London, someone on the kibbutz was deputised to take me to the airport, but it had been raining overnight and the car wouldn't start. When I eventually got to the airport, my flight had already left (or I was too late to board) so I was placed on standby. I was very distraught as I was supposed to be starting my new job the next day. I remember that at one stage, an airline representative gathered all the people who were waiting for a standby flight, asking the people what kind of ticket they held. When it came to my turn, I said that I had a student ticket and that my studies were resuming the next day. I don't know whether this made a difference, but I was allocated a seat on the next plane leaving for London, and so arrived home that evening, able to start work the next day.

My first few weeks in this laboratory were low-key: the company was in the process of moving from one location to a new one (I started in the new one) and so there weren't many people around at first. I spent those weeks in the company of a recent chemistry graduate, checking the mercury content in urine of people who worked in a factory making batteries. I still had my sense of smell then, so some aspects of this work weren't particularly pleasant, but otherwise the work was undemanding. After about a month, the rest of the laboratory staff arrived and I was reassigned to mainly analysing cans of food. The work was fine, but there was a person in the laboratory who greatly annoyed me personally, talking loudly all the time (there's someone like that where I work now). Fortunately, we didn't have any professional contact. It was a great relief when he went on holiday for a few weeks.

I had been having problems with my stomach for some time - there's a story about having a barium meal buried somewhere in this blog - and I began treatment with a new drug whilst working in the laboratory. Part of my memory says it was cimetidine, but another part of my memory says that I started cimetidine the following year and that I was prescribed a different - but also new - drug first. I remember this because I had to eat before taking the pill (several times a day), and once one of the managers found me taking an unofficial break in order to eat something before taking the pill.

Emotionally I was a mess. The disappointment of not spending six months working in Israel, combined with the fact that I hadn't been able to find a girlfriend for a year and a half, and possibly combined with the fact that my closest friends were about to emigrate to Israel and leave me alone for a year, made me a very frail person, emotionally speaking. The stomach medication may have contributed to this as I recall a very definite feeling of relief when I stopped taking the medication (it was prescribed for eight weeks). Another possible cause was that I was less connected to the youth movement than I had been (I had been unable to commit to anything that year because of the intended work period abroad) and so I may well have been missing the emotional support. My musical world was also falling apart, and punk rock was on the rise. I made tentative approaches at getting some psychiatric help, but ironically was diagnosed as insufficiently depressed for treatment. That didn't help much, either.

Out of my emotions came a song which I considered to be one the best I had written at that point; I titled it "Janus' song", because I was looking both backwards and forwards. I remember writing in my mind what was to become the second verse whilst driving home from work one day.

Drifting along in the wind-driven tide
A rainy day, the lookout never cried
The ship ran aground
On the bank that no one knew was there.
The crew ran amok
And the captain turned over and cried
"Help me, help me"

Drifting along as the months they recede
I've taken all the pain I could ever receive
The sun winds its path
There's still half of my song to come
Of course I miss you
But I'm late on my cue to atone
A step forward

I've been drifting away but my back isn't turned
The map still exists, the bridge isn't burned
Now onwards I stare
But I'm keeping aware of my past
The people still call
But your words could never fall from their place
"My friend, remember me".
(16-17 May 1977)

A rather cryptic lyric, with a few influences from Sandy Denny.

In a few hours, sirens will sound across Israel, marking the beginning of Memorial Day; tomorrow evening will be the start of Independence Day.

Saturday, April 22, 2017

Jerry Lee Lewis rides again

Whenever our grand-daughter comes to visit, there will come a time when she starts crawling towards the music room. From there, it is only a small step to having a piano lesson, or as I call it, emulating Jerry Lee Lewis.

Wednesday, April 19, 2017

Donating blood (2)

I haven't had a good history with blood donation over the past few years. The 'bloodmobile' usually comes to the kibbutz once every six months (one is able to donate once every three months), so on this basis, a year ago, my services were declined as my haemoglobin level was slightly too low. The minimum is 13.0 grams of hemoglobin per deciliter, whereas my level was 12.9.

I successfully donated on 05/10/16, with a level of about 13.6, if I remember correctly (see here). As I wrote then, I've been eating a spoonful of sesame seeds in the morning;  I drink a herbal infusion at the same time, thus hopefully ensuring that the iron in the sesame seeds is absorbed.

Yesterday the bloodmobile came again (it was delayed because of the Passover holiday) and again, my services were politely refused when it transpired that my haemoglobin level had decreased to 12.1 (or maybe 12.7 - it was difficult to see from where I was sitting). I wasn't too surprised at this although obviously I'm not too happy. I don't feel anaemic.

My doctor too is not happy; he doesn't know about the current result, but bases his opinion on the comprehensive blood test which I did at the beginning of the year. There have always been a few anomalous results in my 'blood work', something to do with the size of the red blood cells. One possible cause of the problem is that I have been taking every day for years a pill of Omepradex, which prevents GERD (gastro-esophageal reflux disease), but is also implicated in iron malabsorption (this may be my problem). To rule out other problems, in a month's time I will be having an endoscopy (or more correctly, a gastroscopy). 

Saturday, April 15, 2017

Return to Kaizen

Today being Saturday, my morning walk with the dog is a much longer affair than during the week; I let her off the leash when we are just outside of the kibbutz so that she can run free, allowing me to think. Almost every week, my thoughts turn to my thesis, and today was no exception. I'm not sure what I was thinking about at first - maybe it was change management as described in the thesis which I mentioned the other day - but suddenly the name of a book which I once valued highly popped into my head: 'What you can change, what you can't change", by Dr Martin Seligman.

After thinking about this for a few minutes, I realised that I was really thinking about another book which I own, whose name escaped me at first. I remembered that I so much enjoyed the book, I bought a copy in Hebrew for my wife. When I came home, I found the Hebrew copy, but it took me a few hours to find the English book, which ironically was right by my computer chair - on a shelf which is rarely disturbed. The book is called "One small step can change your life" (aka "The Kaizen Way"), by Dr Robert Maurer, and I see that I have written twice before about this book: once in general terms, and once about ERP enhancements. The second blog was written eight years ago almost to the day: plus ça change, plus c'est la même chose.

The 2004 edition which I own opens with the following statements: Most of psychology and medicine is devoted to studying why people get sick or don’t function well in life. But throughout my career as a psychologist, I’ve always been intrigued by the opposite of failure. When a dieter loses ten pounds and keeps it off, I want to know why. Reading those words now, I am tempted to paraphrase them as most academic research into Information Systems in general, and ERP systems specifically, is devoted to studying why companies implementing such systems never extract the value that they had expected. But throughout my career as a systems implementer, I've always been intrigued by the opposite of failure: when a company extracts full value (or more) from its ERP system, I want to know why. Maybe I can add this to the introduction of the thesis somewhere.

I thought that my second kaizen blog would mention something about how small enhancements to the ERP system get adopted almost immediately whereas large ones don't always succeed, possibly because of user resistance (reconstructing my thought processes from this morning, I was considering user resistance to large changes, when I remembered small changes and kaizen). Looking back on what I wrote eight years ago, it seems that I was mistaken to some extent when I wrote unfortunately, changes in usage of ERP programs require that everything is changed at once; if one changes only a little bit, it can be worse than not changing. That's certainly true about inventory maintenance, but not necessarily true about other things. This is another element which has to be added to my analysis of case studies: was the enhancement a 'small' one (localised to one process) or did it apply to several processes?

My task, then, for the next few days, is to read the book once again, and consider how its lessons can be applied to my thesis. An alternative way to state my task with business speak is to view ERP enhancements through the lens of Kaizen. Don't laugh: for a few minutes' entertainment, I considered how I can write a Marxist view of enhancements, in which how the proletariat (i.e. workers) empower themselves against management by self-improvement, suggesting enhancements which ease their labour. Instead, management depresses the workers by insisting on practices which improve management's view of the business whilst making the workers' job harder.

Thursday, April 13, 2017

April thesis update

My last post concerning my thesis concluded with these words "So now, I'm going to cease work for the time being in anticipation of a favourable message from the university". As luck would have it, that day I received a note from my new supervisor, who has finally understood that I am not just changing my methodology but also changing the subject being researched. As the thesis had reached the objectives which I had set myself a few weeks previously, I was able to send it to him there and then. The only response which I have received since is that the supervisor is very busy marking exam papers (presumably the March "diet" of MBA Organisational Behaviour, which I did myself six years ago); now it is the Easter/Passover holidays so again I expect a delay.

I hadn't intended to do very much in the period following the sending of the thesis; I was awaiting the arrival of a textbook about qualitative research which my advisor had recommended, and I was also suffering from a streak of painful headaches which crippled my ability to do any constructive thinking in the evenings. My GP prescribed a strong, non-specific, pain killer to be taken daily for ten days; at first this didn't have much of an effect, but about halfway through the period, the daily headaches vanished. I have been headache free now for about two weeks.

The textbook arrived in time to be read during the Passover holiday; I found the opening chapters very illuminating. I don't see that I have mentioned this here, but I developed an instrument (rather a grandiose phrase) which I am calling a 'programming change order' via which I intend to analyse data collected from interviews. I discovered from reading the textbook that this PCO is a 'limiting device' which helps focus the research and is not necessarily a bad thing. Whilst reading those opening chapters, a few new questions popped into my head:
  1. Who requested the enhancement? (I already noticed that I need to ask how the requests for the enhancements were approved)
  2. Are the enhancements adopted? (Already noted in the thesis that there is no easy way of measuring this automatically)
  3. How are users trained to utilise the enhancements?
Disappointingly, I find the rest of the textbook less applicable to my needs. The book devotes a chapter to discussing the use of computer software in analysing the raw material collected from interviews; as the edition of this book which I have is from 1994, this material is somewhat dated. Nevertheless, I discovered that there is a type of software called Computer Assisted/Aided Qualitative Data Analysis, or CAQDAS for short, and that doctoral students at my university are able to download a recent version of one of these programs (NVivo). These programs store text and enable the user to mark portions of the text with codes; later, these codes can be analysed. As I don't have any raw data yet, I have only glanced at this program and have yet to download it. 

I'm not sure that I will be in need of this program, as the PCO focuses the data sufficiently for my needs; I included in my thesis an example of a PCO and of the analysis which I intend to perform on the PCOs. I intend to collect these analyses and perform some descriptive statistics on them.

I thought that I would try to read again the DBA thesis which I mentioned previously about CRM usage, but found this as hard going as before. I then turned to the same source (British Library EthOS - the e-theses online search) and found another, even more interesting, thesis, entitled "Impact analysis of enterprise resource planning post-implementation modifications", which was completed in 2016. I am trying to read this now; whilst it has great relevance for me, it is also written in exceeding bad English, which makes it hard to understand. My supervisors demand a high level of English (and I am constantly copy-editing) so I find it hard to understand how this thesis - which was for a PhD at a London university - escaped the same fate.

Whilst there is a certain amount of overlap between this thesis and mine, there are also huge differences. This one perpetuates the train of thought which says "many studies advocate that the change in ERP systems should be implemented with minimal modification to the application", a position which is repeated several times throughout the thesis. Of course, one of the strong points of originality in my thesis is that the opposite seems to be true when talking about Priority: I contend that companies are able to strengthen the gains achieved from the ERP program by enhancing it.

Two good things have come out from the parts which I have read: firstly, I need to devote a section to change management - this connects with the points about how enhancements are approved and how users are trained to use them. The second good thing is this research used a methodology called design science research which seems to be applicable to my needs; I have downloaded the original paper on this subject which I will read as opposed as to trying to understand what the doctoral thesis mangles.

Thursday, March 30, 2017

Mint chocolate

Considering my enthusiasm for mint chocolate, I'm slightly surprised at myself for not recording the fact that I've found a type of chocolate which is 90% of what I want. It's not as good as the unobtainable Italian chocolate, but it is accessible and certainly tasty (I would like a little more mint)! As opposed to one type which I tried, which had 75% cocoa, this has 60%, which is just right.

I buy it from IHerb, where it costs about $3 per bar; I order four or five bars a month to save on shipping. I find that I can go a week without any chocolate then finish a bar in a day.

There are several months in the year when the chocolate is not shipped, in order to preserve its quality. My intention is to stockpile a certain amount so that I won't have to undergo withdrawal during the summer.

Wednesday, March 29, 2017

The label number bug

Priority, in common with old fashioned versions of BASIC or even Pascal, has labels which are numbered. A label is the target of a GOTO or LOOP command, and unfortunately is the only loop control structure available to the Priority programmer. One feature which distinguishes Priority labels from BASIC labels is that in BASIC, each label has to be unique, whereas in Priority, one can use the same label several times in the same procedure/trigger. This normally helps, as I can copy entire loops out of one procedure then paste them into another without causing a syntax error. Unfortunately, of course, there is a downside to this.

Consider a post-update trigger which I wrote some time ago and started misbehaving a few days ago. It used to start like this:
GOTO 99 WHERE :$.BRANCHNAME <> '400'; #INCLUDE ORDERS/YYYY_BUF1 GOTO 1 WHERE :$.ORDSTATUSDES = :$1.ORDSTATUSDES; /* do something */ LABEL 1; GOTO 99 WHERE (:$.BRANCHNAME <> '400') OR (:$.MODELNAME IN ('CAD', 'F2D')); ... LABEL 99;
I was looking at this trigger the other day when it occurred to me that there was no point in checking the value of BRANCHNAME twice: if it's not 400, then execution should go to label 99, which is at the end of the trigger. So I deleted the second comparison of BRANCHNAME which occurs just after label 1. Today, a part of the trigger executed, despite the fact that BRANCHNAME <> 400. What happened?

It took me a while to figure it out: I had been bitten by the 'label number' bug. The second line in the snippet above includes a second trigger, and when I looked at that trigger, I saw that the final line in it was LABEL 99! In other words, the effective code was this
GOTO 99 WHERE :$.BRANCHNAME <> '400'; /* INCLUDE ORDERS/YYYY_BUF1 */ GOTO 99 WHERE :$.BRANCHNAME <> '400'; :YYYY_TOTO = 0; /* do something */ LABEL 99; /* end of ORDERS/YYYY_BUF1, back to the original trigger */ GOTO 1 WHERE :$.ORDSTATUSDES = :$1.ORDSTATUSDES; /* do something */ LABEL 1; GOTO 99 WHERE :$.MODELNAME IN ('CAD', 'F2D'); ... LABEL 99;
What happened was that the first line of the second trigger once again checked the value of BRANCHNAME, and because it was not 400, execution jumped to LABEL 99 which is at the end of the included trigger. But in the context of the first trigger, LABEL 99 was not at the very end of the trigger, but rather in the middle, so when the comparison :$.MODELNAME IN ('CAD', 'F2D') was executed (and failed), part of the trigger executed, even though it was not supposed to.

Moral of the story: each trigger should use its own labels, especially for 'procedure end'. I have changed the labels inside the included trigger to be 888 instead of 99. This really is only a problem when the trigger is a 'buffer' - common code which is called by other triggers - but one can never be sure. The entire problem would not have arisen had the final line of the above trigger been the inclusion of YYYY_BUF1; true, there would have been an unnecessary extra comparison of BRANCHNAME, but that's better than having code mis-execute.

Tuesday, March 28, 2017

Priority tip: creating business rules with functions

Priority comes equipped with something called a 'business rule generator'; this allows a user to define actions to be taken dependent on certain conditions, without having to program a trigger. For example, in the 'Customer Shipments' screen, I defined a rule
If 'Billable?' is equal to N 
and 'To ConsignmtWarehs' is blank
then Display error message
"Not able to close shipment form when 'billable' is not set"

(this is a rough translation of the Hebrew text). One is able to set up to three different conditions (in the rule above, the first condition is that field 'Billable?' is equal to N), which is sufficient for most cases. Unfortunately, every now and then, one would like to write a rule which is dependent on four conditions, or one condition is complex (e.g. display an error message when the agent number is not '031' or '046', where the numbers are not contiguous).

I'm not sure that I have a solution yet for four conditions, but I have discovered (by means of the Israeli Priority Users Forum) a technique for complex conditions. Existing functionality enables one to define an expression to be used in a condition, but as usual, this functionality is only partly documented.


One presses the button marked in yellow to display an 'enter expression form'.


Pressing any of the buttons on this form brings up data connected with dates - for example, the documentation shows how to use an expression to display an error message when the supply date of an order is less than five days from today.

In order to display an error when the consignment warehouse is not one of the values '23' or '999', one has to do the following: the rule has to read 'Display an error message when the value of consignment warehouse differs from', with the following expression

(:$.TOWARHSNAME IN ('23', '999') ? :$.TOWARHSNAME : '!!!')
Translated into English, this means: if the value of 'consignment warehouse' is either '23' or '999' then return the value of 'consignment warehouse', else return the value '!!!'. If the value of the warehouse were '12', then this expression would return '!!!' which is different from the value of the warehouse ('12') and so an error message would be displayed. This is an example of the convoluted logic with which us Priority developers have to struggle every day. Most importantly, the 'screen name' of the variable (:$.TOWARHSNAME) must be used and not its title ('Consignment warehouse').

Having documented this, I now need to find a real life example. There are certain advantages to using this technique over using a trigger, as well as some disadvantages. These are listed below in the order of thinking of them.

Advantages:
  1. Theoretically, 'anyone' can do this, not only developers, although I'd like to see them try!
  2. No need to 'build the form'
  3. The rule can be defined for specific users in specific companies 
Disadvantages:
  1. No ability to add comments
  2. Difficult to see the rule (a trigger can be viewed in a code editor)
  3. Not easily copied
[SO: 4442; 5,21,43
MPP: 802; 1,4,6
ELL: 926; 0,2,7]

Monday, March 27, 2017

Thesis update

I see that it has been three weeks since I last wrote about my new thesis. Whilst there has been communication with the university, I have yet to hear anything definite about the research's future. It would seem that the university is not a flexible SME (small/medium enterprise)! In the mean time, I have been working on the thesis, applying what I learnt from the first version.

In the past three weeks, I have expanded the introduction, writing mainly about the strategic value of information systems. I also included a paragraph about SAP, which claims to be the best selling program in the ERP market whilst being complex and suitable only for large organisations; I thought this necessary as much of the literature refers to SAP implementations.

The literature survey has been greatly expanded, beginning with a section on SME flexibility (hence the joke in the opening paragraph). Following this is a brief section on 'Not Invented Here' syndrome, which I think is relevant; as most of the current literature on this subject is about something called 'open innovation', I only cited a few papers without giving any details. Then come expanded sections on misfits and enhancements, followed finally by the literature synthesis. 

The third chapter, methodology, is the one that gave me the most problems in its previous incarnation, and it still is problematic for me. As the methodology which I am going to use is the opposite of what was before, most of the prior material was useless, although I was able to use a certain amount by converting it to the new methodology. Whilst looking for literature about case studies, I came across a recent DBA thesis (not from my university) about the success of CRM (Customer Relationship Management) programs; Priority has an underdeveloped CRM module which I have expanded somewhat by means of enhancements, but it isn't used very much. This other thesis should theoretically be very useful, but I found it jargon-loaded and very hard to read. Its major contribution to me was that it mentioned using Grounded Theory as its basis.

There were a few paragraphs about Grounded Theory in one of the DBA preparatory courses (I haven't been able to find them again) which I didn't particularly understand when I first read it. This time, I devoted some time to the subject, looking for suitable references and papers. I found a very good paper from 2013 which explains not only what GT is, but how it is applied, what criteria must be met, etc. Quoting this material certainly fills out the section about GT; I can then refer to the criteria when discussing my case study-based methodology.

At the moment, I think that I have reached the objectives which I set myself a few weeks ago: the introduction includes a great deal of material, the literature survey covers (to a certain extent) the four topics that I consider relevant, and the methodology chapter is covers what it should. I probably should add some material which shows how my methodology meets the criteria of GT - or not; I don't think that it is 'GT complete', but this is not necessarily required.

The thesis ends at the moment with a restating of the questions which the research intends to address; I don't know at the moment how to continue from here but expect to hear from my advisers what to write.

So now, I'm going to cease work for the time being in anticipation of a favourable message from the university.

Sunday, March 12, 2017

How to exclude rows from summation

In Priority, it is easy to mark a report column containing numerical data so that its total appears at the bottom of the report (it's also possible to mark a column so that sub-totals appear). This is normally the required behaviour, but every now and then there are problems with this mechanism. I have been working on a technique which allows users to assign tasks to documents, although this name is not always apt. Two similar examples are 'samples' - goods have been sent to a customer for evaluation and we want to record communications with the customer about the return of the goods, and 'outstanding debts' - we want to record communications with the customer about the payment of the debt. It is quite conceivable that an invoice might have more than one task connected to it (e.g. on 01/03/17, we spoke to the customer; on 02/03/17, we sent a copy of the invoice, etc). In an unaware implementation, having two tasks per document (open invoice) will cause two lines to appear in the report, and the debt will be summed twice. Not good.

The technique which I have developed is to have a separate procedural stage before the report in which the tasks are stored along with the invoice. This is necessary as I have not found a way of displaying in the same report debts with tasks and those without (there is a problem with what is known as 'left joins' which I haven't been able to resolve). The technique to prevent repeated summing is to store not only the primary key to each task, but also store the ordinal number of the task (i.e. this is the first task, this is the second task, etc). In the report, the value of the unpaid invoice is displayed only if this ordinal number is less than 2. This way, each invoice is summed only once, regardless of how many tasks are connected to it.

In the procedural stage, the pre-defined variable SQL.LINE will give the ordinal number of each task.

Monday, March 06, 2017

Priority technique for 'choose screens'

It sometimes happens that I need to create a form from which users can choose values intended for a procedure. For example, I developed a program which allows a manager to choose lines from an existing customer order, have those lines inserted into a new order which the program creates, and have the original lines zeroed out.

Why would I need to develop such a form when from the "input parameters" dialog of a procedure, one can press F6 twice and open the base form of the parameter (e.g. the customers form, the parts form)? The reason is that pressing F6 twice can only open what the documentation calls "a root form (having no upper-level form of its own)". In the above example, data is required from the 'orderitems' table, whose form is not a root form (its upper level form is, of course, the 'orders' form).

Normally, the way I have solved this in the past is to define a specific table for this task and then develop a form based on that table. Today I discovered an easier way of solving this problem.

One still has to write a procedure which at the least will consist of two stages, a form and procedural code, but there is no need to define a specific table upon which the form will be based. Let's say that I want to re-implement the example which I gave at the beginning. I can define a form which is based on the 'orderitems' table, showing the fields which I want, along with the parent order number (which will appear on every line). The trick is that the procedure passes to the form a file parameter, into which will be stored the lines that are displayed on the form. This file parameter is then passed to the procedural code which acts on the lines in the file (table) - that are the lines which were displayed on the form!

For my own reference, the original example where I found this technique is a procedure called TEC_CALCINVLEVEL, which unfortunately for my readers is not part of standard Priority, but rather was developed in the early days of my company using Priority - before I arrived on the scene. Whoever it was didn't bother in signing their work, let alone documenting it.

I doubt that I'm going to rewrite the various programs of this type which I've already written, but I'll try and bear this technique in mind in the future.

Sunday, March 05, 2017

New thesis is up and running

After my series of blogs last week about what I intended to research, I wrote - mainly for my own benefit - an abstract for my new thesis. Once this was done, I started work writing the new thesis. About 50% of the first chapter is recycled from my original thesis - a brief history of ERP, the ERP life cycle and Priority. Some of the material which originally appeared in the 'misfits' section of the introduction has been moved to chapter 2, the literature survey, as this is now the more suitable location. I added two pages describing my taxonomy of enhancements, giving a lengthy example in each case. To close the chapter, I added a section entitled 'Organisational impact of enhancements', which states the economic reasons for enhancements.

When I finished this (last Thursday), I sent a copy to my supervisor, without knowing what might be decided about my future as a doctoral candidate. I thought it best to show some completed work, so that any discussions which might take place in the university would have a background. On Friday afternoon I received a reply, thanking me for my material and informing me that another lecturer, who is apparently an expert in both organisational behaviour (he came to lecture us in Israel several years ago when I was taking the OB course) and case study-based research, has been appointed as my co-supervisor. But he's gone on holiday for a week!

Whilst this is encouraging, it doesn't actually tell me where I stand with regard to obligations. Do I have to write a research proposal and have it accepted by the research committee? Can I skip the proposal and create an intermediate submission (everything bar the research itself) for approval? Can I skip the intermediate submission and start work on the complete thesis? No doubt I will get some form of answer at the end of this week.

In the mean time, I have been working on the literature survey for the thesis. It turns out that my original sources aren't particularly suitable for my new direction, so I've been looking for more material. I have found a few papers, but most of these are about the implementation phase, based on SAP and are concerned with defining misfits. I am researching the post-implementation phase in Priority installations, examining the benefits of enhancements, so there is a definite research gap.

The literature survey will definitely be shorter than its predecessor; I think that I will be lucky if I manage to find 20 papers which are suitable. This is not necessarily a bad thing. As a joke, I included a short paragraph surveying the paper which I presented in Florence two years ago; there is some relevance. It will be interesting to see whether anyone remarks upon it.

It occurred to me this morning that I could post a request on the Priority Users Forum, asking people to send me examples of enhancements, listing what the misfit was, how it was overcome (I need a better word for this) and what the benefits accrued from doing so. Unfortunately, as fate would have it, the forum's web site is down today and it is not clear when it will be available again.

The title is now Researching the benefits of enhancing ERP programs in the post-implementation phase; this almost certainly will be the final title.