Saturday, February 29, 2020

Thesis update at the end of February

Following on from the previous blog on this topic: my supervisor referred me to the book "Change management - a guide to effective implementation" by Robert A. Paton and James McCalman. It seems that my supervisor was a colleague of at least one of these authors and has published joint papers with one or the other. I was lucky to find a PDF scan of the book on the Internet - I converted it to a form which the Kindle can handle, but this was fairly incomprehensible - so I read the PDF. This was an extremely interesting document and it seemed that almost on every page I could find something to include in my thesis. I think that I got up to about page 70 and found so much that I had to stop! There are about eight references to this book scattered around the thesis.

After this, I turned my attention to the final chapters: the data collected in the research and my conclusions from them. The external reviewer pointed out that this material was extremely thin and needed more work. When I looked at the case studies report chapter, I was shocked at how little I had written here, so the comment by the external reviewer is correct.

The first thing which I did was to move the few conclusions which I had written from one central section to each question (i.e. the conclusions regarding question 1 were placed after question 1, etc). Then I started work on enhancing these conclusions. Maybe at first this went quite slowly but after a while I discovered that I was adding quite a lot of new material. I would work on this one day, adding material, then look at the chapter the next day, editing what I had written before and adding even more material.

This process has gone on for two weeks and whilst the chapter has not doubled in size, it is certainly much much larger. I added to the case studies another enhancement which had been developed recently in my company; there were some interesting insights to be gleaned from this case. Of course, it didn't hurt that another enhancement added more material to the chapter.

The subject of pilot studies caught my attention: some of the interviewees mentioned that they had carried out a pilot study but the data weren't necessarily representative of data found 'in the wild'. This topic occupied me for a few days: I was hoping to find some academic literature on how to choose data for testing, but I didn't look very hard and couldn't find anything. A day or two later, I could write that sometimes a 'proof of concept' is developed that inadvertently becomes the final procedure; a proof of concept will naturally work on data which is known to be good and deliberately is not tested on 'pathological' data. I think that this is good material.

This morning I was working on the thesis again, this time (once again) writing about user resistance. At first I wrote something about user ambivalence, but then the old topic of knowledge hoarding came to mind. This is one of the ten most read blog entries of mine and it is very suitable for the thesis, so I included part of it, rewritten to the thesis style.

Let's see what my supervisor says about this version. There is one area which is still weak - the philosophical basis of the research. This part seems so unnecessary to me: after all, the research committee knows this material much better than I, but I understand that they want to see that I understand it too.

Saturday, February 15, 2020

Appropriating the 'HTML document' framework

It all started when I was asked to prepare a report for the CEO ... well, three reports if you don't mind, and the CEO would like to have them all in one email. My thinking process went something like this: to send the reports in an email, we will have to build a letter and attach the files to the letter (I've done this before), but the only way that I know to save a report automatically as a file (so that it can be attached) is to save it as a pdf file, and the only way that I know to accomplish this is to use an 'HTML document', like a delivery note or an invoice. Anyway, there's no connection between the three reports so there's no way I can define a suitable HTML document.

Or is there? Looking at this problem laterally, an HTML document is built from several sub-reports, all of which display data which is connected to a single item, be it order, delivery note or invoice. But when one looks at this, there's no mandatory reason that all the sub-reports have to look at the same item, or even look at it at all. I could pass an item which is guaranteed to exist (like part 000 or customer www) then ignore it.

So I set about writing an HTML document from scratch: this used to be a daunting experience, especially seeing as it is almost totally undocumented and very fragile, but now I've got some experience in this and know that I am capable of the required programming. Speaking abstractly, there are three sections to an HTML document: the first is composed of three (or possibly four) stages, these being INPUT, HTMLCURSOR, possibly HTMLEXTFILES and SQLI. The second stage comprises the various reports which need to be displayed, and the final section is another INPUT stage where various parameters are displayed.

The input stage generally has one parameter named PAR which gets linked to a table holding the values which are being passed to the document. The table can have one row or many, depending on how the document is being invoked (one row if invoked from a form, several rows if invoked from a menu). The HTMLCURSOR stage seems like black magic: normally one would visibly link the PAR parameter to a table but here it seems to be done automatically (presumably based on information in the INPUT stage). This stage simply consists of a statement like SELECT ORD FROM ORDERS WHERE ORD > 0; this assumes that PAR consists of a linked table of orders. Ignoring the HTMLEXTFILES stage for the moment (this selects any attachments or 'ext[ernal] files' connected to the given record), the SQLI statement at a minimum seems to be a recapitulation of the HTMLCURSOR stage as it extracts the key field from the current record and saves it as a parameter for the sub-reports.

But nowhere does it say that the sub-reports have to use this key field! Obviously, a normal HTML document would use this key field, but here I am appropriating the framework of the HTML document and I couldn't care less about this key field. It seems that I have to extract it though and even pass it to the sub-reports (where it gets ignored) otherwise the document doesn't display.

The SQLI stage can also issue SQL queries and store the results in linked temporary files for the following sub-reports to use. As two of the three reports which are to be displayed require some data mining, I can do this during the SQLI stage.

Assuming now that I have an HTML document which actually displays the three disparate reports, how do I invoke it to create a PDF file then send an email with the PDF file attached? I've done this bit before: one uses the WINHTML program to create the document and save it as a PDF, then one builds an email and sends it (I wrote about this some years ago)
LINK PART TO :$.PAR; GOTO 99 WHERE :RETVAL <= 0; INSERT INTO PART SELECT * FROM PART ORIG WHERE PARTNAME = '000'; :FNAME = '../../system/mail/TEST_ALL_IN_ONE.pdf'; EXECUTE WINHTML '-d', 'TEST_WWWALLINONE', 'PART', :$.PAR, '-pdf', :FNAME; UNLINK PART; SELECT ENTMESSAGE ('$', 'P', 10) INTO :SUBJECT FROM DUMMY; LINK GENERALLOAD TO :$.GEN; GOTO 99 WHERE :RETVAL <= 0; INSERT INTO GENERALLOAD (LINE, RECORDTYPE, TEXT, TEXT2) VALUES (1, '1', :SUBJECT, 'someone@somewhere.com'); INSERT INTO GENERALLOAD (LINE, RECORDTYPE, TEXT) VALUES (2, '2', :FNAME); EXECUTE INTERFACE 'TEST_SENDMAIL', SQL.TMPFILE, '-L', :$.GEN; :LETTER = 0; SELECT ATOI (KEY1) INTO :LETTER FROM GENERALLOAD WHERE LOADED = 'Y' AND RECORDTYPE = '1'; LINK MAILBOX TO :$.MB; INSERT INTO MAILBOX SELECT * FROM MAILBOX ORIG WHERE MAILBOX = :LETTER; EXECUTE SENDMAIL :$.MB, :XMSG; /* send it */ UNLINK MAILBOX; UNLINK GENERALLOAD; LABEL 99;
I don't imagine that I will frequently use this technique of making a fake HTML document composed of unrelated sub-reports, but it is an interesting technique.

Saturday, February 08, 2020

The little drummer girl (TV)

A few days ago, whilst looking at the list of TV programmes to be broadcast, I noticed on a little watched channel the series "The little drummer girl" which is, of course, based on the book by John Le Carré. This is one of my favourite JlC books, and part of our itinerary last year in Greece was not completely by chance. 

Unfortunately, I had missed the first four parts of this six part series, but I managed to catch the last two parts. Maybe they'll show this again after a while - one of our satellite channels rebroadcasts series after six months or a year after the initial screening. I've set the series to be recorded, so if it does return, it will be recorded automatically.

There was a film made of this book which was a complete travesty. It starred Diane Keaton of all people as the eponymous girl, which is wrong on so many levels. I have a video of this somewhere but as it was such a poor rendition of the book, I haven't seen it for a long time. I don't know how someone who had not read the book would take the film.

The tv series was much more on the ball. The fifth episode was very close to the book, but the sixth and final episode took several liberties with the source material. It didn't ruin the story but took it in a slightly different direction. 

As is common with dramatisations of favourite books, the characters didn't look very much as I imagined them, although Charlie, the heroine, was a much better match for her character than most of the other actors. At least there weren't unexplicable name changes although there were location changes: the final scenes play out in London and Britain instead of Germany.

I thought that the two episodes that I saw were of high standard and I hope that some day I'll be able to see the previous episodes.

Saturday, February 01, 2020

Thesis update

I see that I haven't written on this topic for over two months: this is not to say that nothing has been happening, just that I haven't written about it.

During November and part of December, I carried on working on the thesis, trying to implement the changes which had been suggested by the external reviewer. Like previous occasions, I felt at times that I was working in the dark and that I needed supervision. Unfortunately, once again my supervisor had disappeared - it turns out that his mother had died.

Eventually I received feedback on what I had written and as a result, we had a good discussion in mid-January. I was heading in the correct direction but there was still plenty to be done: mainly (once again) explaining the importance of the topic and explaining my choices. I worked solidly on the first four chapters for just over a week then submitted yet another version.

I received feedback on this late Thursday evening (I only saw it on Friday morning) in preparation for another discussion scheduled for Friday morning. This version was considered to be much better and is nearly complete. We talked quite a bit about managing engineering change as opposed to managing enhancements, which is a central point. I am not differentiating sufficiently between the two.

My supervisor said that he will send me references to some relevant literature; it will be up to me to read then decide what I am taking from this material in order to improve the thesis. It might even come down to me changing the thesis title to something like 'Applying ... change techniques to ERP enhancement management', which will require some restructuring but will be interesting. I don't know at the moment because I haven't seen the material yet - I tried finding some on the basis of our discussion but couldn't find anything relevant.

My supervisor has realised that I want to up the pace as much as possible; I would really like to have a new complete thesis by the end of February which allows sufficient time for another external review before the final viva and the graduation ceremony in June. But quality should not be sacrificed for speed, and if this means graduating at the end of the year, then so be it.

Strangely enough, the end of the session was devoted to talking about the research process: while it is important to have initial ideas, these should be influenced by other people's ideas so that in the end, the final product has been improved. This is remarkably like some of the things which have been happening at work: there is a problem, I might suggest a partial solution which then gets worked on by other people in order to reach a much better solution.