Monday, January 30, 2023

Thesis status at the end of January - two months before the final submission date

About six weeks ago, I wrote about a new enhancement and how it can serve as a validating case study for my research. I concluded with the words at home I will be revising whatever needs to be rewritten in the thesis, and adding what needs to be added. I expect that everything will be over by the end of January.

Well, we're now at the end of January - actually the day before the end - and I have just uploaded a new version of the thesis for my supervisor to read. I would say that for the first three weeks after the previous blog, I didn't add very much to the thesis, but the past few weeks have seen a great deal of activity. The most important part of that activity was holding interviews - one with myself and two with members of the enhancement's steering committee. I was able to write these up very quickly; writing up my own interview took a bit longer, but I was also establishing the format so that I could paste the other interviewees' answers in very easily.

I had some technical problems in accessing the interview recordings that I partially documented in the thesis (this is all good meta-data). The first interview was held via Teams and lasted just under 18 minutes; when I came to listen to it and transcribe the answers, the interview cut off sharply at about 11:30 minutes. This means that answers to the final questions were not recorded. Fortunately I wrote up this part of the interview the day after it had occurred (coincidentally I had stopped the previous day just before the recording finished), so the answers were clear in my mind. Strangely, the same thing happened with the previous interview with this person: the last part of the conversation was not recorded.

Avoiding Teams, I conducted the second interview via telephone, recording the conversation. There were no problems with the file itself, but I had great difficulty in transferring the recording from my phone to my computer. After connecting the two with a USB cable, the computer would not recognise the existence of the phone, even though the latter device was charging via the cable. I have used the same cable to transfer songs from the computer to my wife's phone, so the cable is not the problem.

After trying a few approaches to get my computer to recognise the phone, I began to think of alternative strategies. First I found the file on the phone (via the 'My files' app) then looked at the various options available to handle the file. Fortunately I found the option to share the file with another application, so I was able to send myself an email with the file attached. Listening to the (now backed up) recording, there is heavy breathing every few seconds that probably comes from me breathing normally but onto the headset microphone. As I was writing up the interview shortly after it occurred, I wasn't too dependent on the recording, so the breathing didn't mask much of the conversation.

Let's see what the supervisor has to say.



This day in history:

Blog #DateTitleTags
32930/01/2011Sumptuous Sunday 5Cooking, Slow cooker
33030/01/2011MarketingMBA, Marketing
54330/01/2013Notes on 'The Fingertip effect" and ERPERP, DBA
119830/01/2019Yet another mp3 playermp3

Saturday, January 28, 2023

Improving a query in the Management program

The management program that I maintain for the OP has had a comments table 'from time immorial'; depending on a field in the table, a comment can be connected to a docket, a therapist or to a project. From these screens, the appropriate comments can be seen (otherwise known as vertical access); i.e. for a given docket, one can easily see the comments for that docket.

A few months ago, I added the concept of a 'comment type' as we had introduced certain automatic comments; whilst these comments can still be in the vertical manner, there was no way of seeing all comments of a given type (aka horizontal access). So I developed a report that showed all the comments, depending on the various parameters chosen. As a comment regarding a therapist is somewhat different from a comment regarding a docket, the query that I had to write required a case statement in order to selectively display data. As this query was written in the 'modern age', it included all the bells and whistles developed in the past (i.e. adding parameters in a dynamic fashion).

select comments.curdate, comments.subject, comtypes.name, case when comments.sug = 'D' then comments.docket when comments.sug = 'T' then therapists.name else comments.docket end as avalue, customers.name, comments.comment from comments left join comtypes on comtypes.id = comments.comtype left join therapists on therapists.id = comments.docket left join xtracust on xtracust.docket = comments.docket left join customers on customers.id = xtracust.customer where 1 = 0
This worked, but yesterday I noticed that the screen took a long time to open; the query itself won't return any records because of the 'where 1 = 0' clause, but apparently the SQL parser still has to parse the entire statement.

This morning I woke up thinking about this query and how it could be improved. At first I couldn't see how to do this, but a bit later, I realised that the default query (as shown above) is replaced by a more dynamic query when the program runs; the purpose of the default query is only to define the fields that will be displayed in the database grid, and to define the indexes on the basis of those fields. So all I need do was write the most minimal query that showed the same fields. This became
select comments.curdate, comments.subject, comtypes.name, cast (comments.docket as varchar (32)) as avalue, customers.name, comments.comment from comments left join comtypes on comtypes.id = comments.comtype inner join xtracust on xtracust.docket = comments.docket inner join customers on customers.id = xtracust.customer where 1 = 0 and comments.sug = 'P'
There's no need for left joins: removing them speeds up the query. Unfortunately, I discovered that the 'case' statement had concealed a problem: in the 'avalue' field was being displayed either a number (comments.docket) or a string (therapists.name). Once I had removed the 'case' statement, I had to display a string as the fourth field, so I had to use the extremely ugly 'cast...' function. Why cast the docket number to a string when I could use the therapist's name (after all, there are fewer comments for therapists than for dockets, although there are fewer comments for projects than for therapists)? Because in the context of retrieving therapist comments, there is no concept of customers, making the 'customers.name' field even more complicated than using the cast.

Once I had done this, I realised that by the time the dynamic query is built, the screen already 'knows' whether it is to display comments from dockets, therapists or projects, so there's no need for the 'case' statement in the live query. The query itself has to change according to which type is chosen; in the end I defined several constants (as shown below) then built the query line by line.
const q1 = 'select comments.taarich, comments.subject, comtypes.name, '; q2 = 'cast (comments.docket as varchar (32)) as avalue, customers.name, '; q3 = 'therapists.name as avalue, cast (''-'' as varchar (32)) as name, '; q4 = 'comments.comment from comments '; q5 = 'left join comtypes on comtypes.id = comments.comtype '; q6 = 'inner join xtracust on xtracust.docket = comments.docket '; q7 = 'inner join customers on customers.id = xtracust.customer '; q8 = 'inner join therapists on therapists.id = comments.docket '; q9 = 'inner join projects on projects.id = comments.docket '; q10 = 'inner join customers on customers.id = projects.customer '; q11 = 'where 1 = 1'; [following is the code that builds the query] s:= q1; // this is the query string sug:= GetSug; // 'sug' is Hebrew for 'type', a reserved word if sug = 'T' then s:= s + q3 else s:= s + q2; s:= s + q4 + q5; case sug[1] of 'D': s:= s + q6 + q7; 'T': s:= s + q8; 'P': s:= s + q9 + q10 end; s:= s + q11;
This strange code builds the query as according to the type. Note that if the type is 'T' (i.e. therapist) then the value for the customer name is '-'.

Thinking about the above now (a few hours after having implemented the above), I've noticed one other problem that is not with the SQL code but with the parameters. On the screen is displayed a combo box from which the customer can be chosen. As I've noted above, this makes no sense in the context of therapists; I should add to the 'rgSugExit' event handler to update the combox box data with those of the therapists should the T option be chosen; this event handler already reloads the 'comment type' combo box with the types applicable to the comment type. After looking at the code one more type, I see that in fact the customers combo box is hidden (but not its label!) if the T option is chosen. This is almost correct but a little more needs to be done.



This day in history:

Blog #DateTitleTags
11828/01/2008Brains and mirrorsPsychology, Social intelligence, Martin Seligman, The brain
137428/01/2021Cormoran StrikeTV series, DCI Banks, Cormoran Strike

Monday, January 23, 2023

More David Crosby: Guinnevere

Some web pages devoted to this song:

A live performance

An analysis video

And not for the faint of heart, a tab. I can hear the transition between 4/4 and 3/4, but the transition into 11/8 eludes me for the time being.

Graham Nash's "guitar playing" in this video (and the one following, "The Lee Shore") reminds me of a story in his autobiography: 

One day, in February 1963, we finished a particularly energetic lunchtime show at the Cavern. The girls had left, the lights came up, and people were cleaning the place, picking up popcorn packages and cheese wrappers, wiping up piss. We were hauling our meager gear into the tiny side dressing room when a short, older man with glasses pushed his way into the cubicle. 

“I’m Ron Richards,” he said, thrusting out a hand. “I work at EMI and I liked your show. I especially liked the guy who was playing without any guitar strings.” 

Would the guilty party please step forward? Okay, that would be me. The night before, we had played at Colston Hall in Bristol, and during the show I’d broken my last string and couldn’t afford new ones. So I did the lunchtime show at the Cavern with my Harmony guitar—and no strings. What did it matter? Tony, Eric, and Don made up the Hollies’ dynamic rhythm section. I strummed along, except I didn’t plug in, so it didn’t make any difference whether I had strings on or not. Ron didn’t care. In fact, he found it intriguing. He loved our energy, and we’d gone down great. That was all he needed to make the next move. 

“I’d be very interested in recording you,” Ron said. “What do you think?”

Frequently I've seen videos/pictures of CSN where Graham is unencumbered with a guitar; presumably his instrumental capabilities were negligible to those of Stills, Crosby and Young.



This day in history:

Blog #DateTitleTags
32823/01/2011Sumptuous Sunday 4Cooking
54123/01/2013The simplest ideas are normally the bestERP, Problem solving
92023/01/2016Vinyl log 27 - 23 JanuaryVinyl log, 10cc
137123/01/2021Porting an application to Windows 10/Delphi 10.2 (part 3)Programming, Delphi, Unicode
137223/01/2021Porting an application to Windows 10/Delphi 10.2 (part 4)Programming, Delphi, Unicode

Friday, January 20, 2023

David Crosby (1941-2023), RIP

Probably like most of my peers, my first exposure to David Crosby was the eponymous 'Crosby, Stills and Nash' album from 1969 (he's the one with the mustache on the right - the order of names is in reverse to their pictures). I'm not sure when I first listened to it properly: certainly not upon its release. I remember at the infamous Weeley festival (August 1971) reading a copy of the International Times* that featured an article based upon CS&Y's 'Wooden ships' - the article was called 'songs ... the apocalypse' (I don't remember now whether it was 'songs of', 'songs for', 'songs about' or even something else). Then again, there was the soundtrack of the film of the Woodstock festival that featured two good songs from the trio.

However it was, I reconnected with this album during my gap year (73-4), especially liking the divine song 'Guinnevere', written by DC. Unfortunately, in my humble opinion, he was never able to reach the same dizzy heights of this song or 'Wooden ships'. I've no doubt written this before, but I think the album would have been improved by removing the final song ('49 bye byes') and replacing it with David's 'On the lee shore'. There exists an almost finished version of this song on the unofficial album 'Studio Archives 1969': the lead guitar is a bit rough here and there and presumably would have been replaced had the song made the album. '49 bye byes' on the other hand is a waste of space. 

Thinking about it now, during the gap year I was also introduced to another Crosby song, the very contentious 'Triad', as performed by Jefferson Airplane. I have this version as well as Crosby's version (also on 'Studio Archives').

Then the Crosby trail ran dry, at least for me. Graham Nash's autobiography naturally contains a great deal of material about Crosby; one comes away thinking that Crosby peaked too early, and spent the last 50 years of his life in a crack cocaine haze. 

A few years ago I found the CSN  album that opened with a very strong Crosby song, 'Shadow captain', co-written with pianist Craig Doerge. His other songs on the album are not so good.

Other activities of note are 'discovering' Joni Mitchell and producing her first album. He also sang harmony vocals on several songs by Jackson Browne.

So farewell David, a voice from youth. Considering his life style, one might be surprised that he lasted so long.


This day in history:

Blog # Date Title Tags
799 20/01/2015 Position paper submitted DBA
1105 20/01/2018 Noise cancelling headphones Personal, Headphones
1284 20/01/2020 Grand-daughter #2 standing Grandfather
1465 20/01/2022 Accountant's gloves Personal
1574 20/01/2023 David Crosby (1941-2023), RIP Obituary, CSN



* I found the article in the International Times archive; it was written by Jody Breslaw and is actually called "A hard rain's gonna fall", but it's subtitled 'visions of the apocalypse', which is what I remembered. The article covers two pages; the second page is very legible, but the first (that of course refers to 'Wooden ships') is not. In desperation, I 'printed' the page to PDF then in a PDF viewer increased the magnification to 400%: this is definitely legible.

Breslaw would appear to be a writer for the music press, as there are a few references to him (her?) in various rock publications. After writing about the apocalyptic vision of the early Dylan, Breslaw goes on to write The Buffalo Springfield-Byrds-Airplane-CSN&Y family pick up where Dylan left off.... From the first CS&N album, "Wooden Ships" is one of the classic apocalyptic songs. It arises from the humanistic, fabulistic science fiction tradition of, say, Vonnegut, but is more suffused with anguish and loss. Here it is again, an explicit depiction of the collapse of Western civilisation, etc., presumably through atomic holocaust. "Horror grips us as we watch you die", but there's still hope for us - "we are leaving" to make a new and better world. The music and lyrics have a pleading quality, a yearning theme of return to innocence which was later to culminate in Woodstock.

Reading this 50 years after the event, I am struck by how erudite is the above. One might imagine that IT was written by people who weren't too concerned with the niceties of language, but the punctuation of the above paragraph is 100% - 'etc' is written with a full stop before the comma as behoves an expression that has been shortened (et cetera). Similarly, the multiple commas around Vonnegut are correct. The only word that is wrong is the 'which' in the final sentence that really should be a 'that'.

Saturday, January 14, 2023

Inside and outside the lemon tree



As I've probably written before, we have a lemon tree in our garden. In the past, it's given us a fair amount of lemons, but for some reason, the last year has been somewhat barren. I'm pleased to see that now we have plenty of lemons growing. 

The picture on the left was taken from inside the tree; there's a nice clump of lemons in the top left hand corner. The picture on the right was taken from above the tree (from our balcony): there are some good sized lemons in the middle of the picture, but I'm going to need a ladder to get to them (if at all).

But even the small lemons are very juicy, so the size doesn't matter too much. Some rain would help....


This day in history:

Blog #Date TitleTags
44314/01/2012More City BoyCity Boy
53414/01/2013Election day duty driverKibbutz, Probability
66914/01/2014CommutingPersonal
91514/01/2016MP3 HeadphonesRichard Thompson, mp3
91614/01/2016Alan Rickman, RIPFilms, Obituary
157414/01/2023Inside and outside the lemon treePersonal

Friday, January 13, 2023

Israeli democracy nightmares

Yesterday evening at about 7:45 in the evening, we turned on our television, by chance to see a live speech from the president of the Israeli Supreme Court, Esther Hayut. Following are parts of what she said.

"This is an unrestrained attack on the legal system, as though it were an enemy to be stormed and subdued. Cynically enough, those who thought up this plan call it a plan ‘to fix’ the legal system. And I say, this is a plan to dismember the legal system. It is intended to land a mortal blow on the independence and impartiality of the judicial branch of government and to turn it into a silent branch....

"Whoever tells you ‘no more striking down laws’ actually means: no more prohibiting the arrest of soldiers for days without bringing them before a court, as the court ruled in the Tzemah case; no more protection of the right of a car owner to receive income supplement, as the court ruled in the Hassan case; no more realization of the right of single-sex couples to parenthood and a full family life, as the court ruled in the Arad-Pinkas case.

"And anyone who tells you ‘no more disqualification of decisions marred by extreme unreasonableness’ actually means: no more prohibiting cutting off electricity to citizens in financial or medical difficulty, as the court ruled in the Moisa case; no more reinforcement of all educational institutions near the Gaza border, as the court ruled in the Wasser case; no more cancellation of severe restrictions on freedom of political expression in the press and in demonstrations, as the court ruled in the Schnitzer case, and in many other cases; no more obliging a local authority to build a mikveh (ritual bath) for religiously observant women in a settlement with a secular majority, as the court ruled in the case of Kfar Vradim; no more protection of the right of children with special needs to receive free special education, even when they are integrated into the regular education system, as the court ruled in the Yated case. No more, and these are just a few examples.

"In other words, if government decisions are the end of the matter, and the court is deprived of the tools for fulfilling its function, it will not be possible to ensure protection of rights in cases in which government agencies infringe them in an uncalled for way through legislation or administrative decisions."

A few minutes later, the new Minister of Justice, Yariv Levin, said (in a speech that almost certainly was written earlier in the day, i.e. without knowing exactly what Hayut was going to say):

"Something happened this evening. It turns out that there is another political party in Israel. A party that did not compete in the election that took place only two months ago. A party that has put itself above the Knesset, above the decision of the people. This evening, we heard rhetoric familiar from black flag demonstrations. It’s the same political agenda, the same call to set the streets on fire".

That's not what we heard, but never mind.

As usual, I awoke in the middle of the night (at about 2:20 am) for a toilet visit; unusually I didn't fall asleep straight away once back in bed. Instead, I had nightmares of Yariv Levin running the country.



This day in history:

Blog #DateTitleTags
32513/01/2011Mirror mirror on the wallPersonal
44213/01/2012Caught in a musical timeweb10cc, City Boy
53313/01/2013Embedding pictures in HTML emailsProgramming, Delphi, Email
79813/01/2015Split questionnaire designDBA
91413/01/2016Reviving the researchDBA
146113/01/2022Desiccated apple slicesCooking, Ninja grill

Saturday, January 07, 2023

Passports

Our Israeli passports will run out at the beginning of June 2023. I remember this date well as we had to renew our passports in a hurry ten years ago in order to travel to Spain and Britain. Five months in advance should be plenty of time, no? So I search for 'renew passport' on the Internet (in Hebrew, of course) and receive details of what I should do. The first step is to make an appointment for the local office that deals with passports, identity cards, etc. Since Covid-19, they have set up an appointments application easily accessible via the Internet.

The first available date for Bet Shemesh is ... 4 July! That can't be right! But, yes, it is: I have to make an appointment six months in advance! As one cannot use passports in the three months prior to their running out, and a new one could take as long as six weeks to arrive, this means that we cannot leave the country between the beginning of March and the middle of August. 

What does this mean if I am honoured to attend the degree ceremony in Edinburgh in June, should I be awarded my doctorate?

The website shows various locations and dates - I could make an appointment for Karmiel on 2 May, thus saving two months! As I and my wife travel half price on trains, this wouldn't cost very much. Unfortunately the website won't allow me to make multiple appointments. OK, I cancel Bet Shemesh and make an appointment for Karmiel.

Now we're set for 2 May... in Karmiel, with a 3 hour journey ahead of us (and 3 hours back). Even so, I'll check the website every day for cancellations in Bet Shemesh.

As for paying, if I do so before the end of February and via the website, the renewal will cost only 160 NIS. I understand that after February, it will cost 320 NIS, and paying in person is even more expensive. I believe that I can pay in advance, but I'll cross that bridge when I come to it.



This day in history:

Blog #DateTitleTags
53007/01/2013Recurring actors in long running TV showsTV series
91007/01/2016Vinyl log 25 - 3 JanuaryVinyl log, Jackson Browne
100007/01/20171000 blog entriesMeta-blogging
136907/01/2021I haven't disappearedDBA, Health
145607/01/2022Fourth time aroundCovid-19

Friday, January 06, 2023

Randy Newman's 20 greatest songs

It all began with an article (if that's the correct word these days) on the Guardian's website from yesterday evening listing Randy's 20 greatest songs, at least as according to author Elle Hunt. First, let's look at the list before making comments:

 

 

20. Short people 19. Have you seen my baby? 18. Lonely at the top 17. You can leave your hat on 16. When she loved me 15. Love story (you and me) 14. Mama told me not to come 13. Birmingham 12. Political science 11. Louisiana 1927 10. I think it's going to rain today 9. I love LA 8. Simon Smith and the amazing dancing bear 7. Rednecks 6. Marie 5. In Germany before the war 4. My life is good 3. Living without you 2. Sail away 1. God's song

Really? It's as if Randy has done nothing good since 'Trouble in Paradise' (1980). 'Living without you' in position 3? As much as I like the old songs, most of them don't belong on this list. 'You can leave your hat on' may have earned more money than the other songs, but it's not much of a song as a song.

If I were going to list his 20 best songs, they might be (in chronological order)

1. I think it's going to rain today 2. Simon Smith and the amazing dancing bear 3. Davy the fat boy 4. Sail away 5. Lonely at the top 6. Rednecks 7. Louisiana 1927 8. In Germany before the war 9. It's money that I love 10. Same girl 11. My life is good 12. Christmas in Capetown 13. Dixie flyer 14. New Orleans wins the war 15. Bad news from home 16. The world isn't fair 17. A piece of the pie 18. Shame 19. Lost without you 20. She chose me

One thing that I have noticed about Randy's songs is that they have become less amenable to covers. How could anyone else record 'The world isn't fair', a song that in my point of view is amongst his best?

Today really is Sandy Denny's birthday. In the summer of 1973, she played some concerts as support to Randy Newman, but I've never been able to find anything out about these concerts.

Thursday, January 05, 2023

200 best singers of all time

No small fuss was made in Israel when Rolling Stone published their list of 200 best singers of all time, including Ofra Haza in position 186. Nice that they've heard of her. I admit that I haven't heard of many of the singers placed in these positions.

Anyway, I idly wondered whether the late great Sandy Denny would appear in the list. And appear she does: position 164

Denny’s buttery, mystical croon is so timeless that it sounds centuries older than the Sixties folk revival, making her the perfect choice to appear on a song about Middle-earth (and take home the award for Led Zeppelin’s only guest vocalist, on “The Battle of Evermore”). In both Fairport Convention and her solo work, she commanded a sense of longing with her phrasing and feathery register that gave her an ethereal quality on par with other tragic folk icons like Nick Drake and Judee Sill. She died in 1978 at just 31, making her obscurity all the more alluring to those who stumble upon her catalog. “What you heard was a kind of awe at the contingency of human life and the beauty of the world,” Greil Marcus wrote in her Rolling Stone obituary. “A certain reverence for the past, and a steady determination to take her place in the long story she was telling.” —A.M. 

Good news for her birthday that by chance is today. And also by chance, the t-shirt at the top of the pile that I took today to wear underneath my buttoned shirt was the one with the David Bailey picture of Sandy.



This day in history:

Blog # Date Title Tags
666 05/01/2014 End of year blues ERP
1104 05/01/2018 Business rules in Priority which do not apply to specific users/2 Priority tips
1455 05/01/2022 Sandy Denny would have been 75 years old today Sandy Denny



Correction: Wikipedia has Sandy's birthday as tomorrow, meaning that the coincidences that I wrote about are not coincidences. Today is, however, Maartin Allcock's birthday.