A creative writing visit to a unicode courtyard under construction.

William Overington

Copyright 2002 William Overington

Tuesday 12 February 2002

As well as being interested in computer programming, I am also interested in creative writing.

I like to use creative writing style scenarios when designing programming systems as that can make, for me at least, quite complex situations seem quite straightforward.

I have used this technique in designing the optional additions to the unicode courtyard for the Astrolabe Channel numerical pointer.

The optional additions to the unicode courtyard for the Astrolabe Channel numerical pointer are part of real computer science for human to computer communication using just the twenty buttons of the minimum set of input events of the DVB-MHP specification. However, from my standpoint they are also part of a work of art, in a similar though different manner to the way that an abstract board game may be thought of as a work of art.

So, with this short introductory note so that anyone reading this document is aware that the text that follows is creative writing fiction and that such a place does not really exist, here is a story about a visit to a unicode courtyard which is under construction, complete with the optional additions. Hopefully readers will find that the explanation of the various sections of the unicode courtyard expressed in visual spatial terms will assist comprehension of the system as well as hopefully enjoying the story.

Speech is between " characters, thoughts are between ' characters.


Touring a new implementation of an Astrolabe Channel numerical pointer, it was decided to enter the unicode courtyard and look around.

A look of surprise.

'Why, this is different to any unicode courtyard which I have looked at before!' is the thought.

'It is much larger, there is a large sixteen pointed star made of turquoise stone, about two metres in diameter, set in the paved area nearby. Over there, straight ahead, is a similar large sixteen pointed star made of pink stone, also set in the paved area.'

'And off to the right is a raised patio area which runs all of the length of the courtyard.'

"Good morning, I see that you are admiring our handiwork."

"Yes, indeed. I was just wondering how it will all work."

"Ah, yes. This is a unicode courtyard with the optional additions fitted."

"Ah."

"Are you familiar with unicode courtyard design?"

"Well, a little. I am familiar with the system for generating a single unicode character, but I have no idea about all of these additions."

"Oh, I'll explain if you are interested."

"Yes please."

"Well, if you would please look at the turquoise star over here, you will notice that it is made up of sixteen individual turquoise lozenges, each identical in size, placed so as to make a sixteen pointed star."

'Ah, yes, each lozenge has four equal length sides, is symmetrical about two axes at right angles to each other and has two angles each of 360 degrees divided by 16 degrees, what's that, 22 and a half degrees, and two angles each of, erm, 360 minus twice 22 and a half, all divided by 2, which is .... 157 and a half degrees.'

"The turquoise star represents the part of the unicode courtyard with which you are already familiar. It is now called the first area."

"Can I use it in the same way as usual?"

"Indeed yes, the optional additions are implemented so that if someone wishes to just enter a unicode courtyard which has the optional additions yet use it just as in the basic design, then he or she can do so in exactly the same manner as before, namely sixteen buttons to express hexadecimal items so as to build up a character, the enter button to leave producing an event and the teletext button to return to the main part of the Astrolabe Channel numerical pointer without producing an event."

"And up followed by down to reinitialize the unicode courtyard if a keying error is made!"

"Indeed yes. And that feature was thought to cause a bit of a problem in adding the additional options, yet it has all been resolved reasonably satisfactorily."

"And now there are all the extra items in this courtyard!"

"Well, the thing is, the unicode courtyard with which you are familiar can produce individual characters, yet the additions allow the unicode courtyard to produce a string as well. Well, when I say "as well" I mean one or the other for any particular event generation using the unicode courtyard. One either produces a character event or a string event, though the next event produced could be of the other type or the same type as one chooses."

"Wow! How does one choose."

"There is a set of three radio buttons and they determine which type of event is produced, there is a character direct event, a character indirect event and a string event. When someone enters the unicode courtyard the choice is set at either character direct or character indirect at the choice of the implementer. Character indirect is when the event code produced is always the same and the information about the character is carried in a data element. Character direct is when the event code itself carries the information about the character. String events must always be indirect in nature. Anyway, the end user may explicitly select the type of event by pushing the radio buttons, though usually that is not necessary as the system works by forming up both a character and a string. If the string ever gets more than one character in length, a string event is automatically presumed."

"Ah."

"Now that pink star over there, which is the same shape as this turquoise star, is used to enter whole characters one at a time. That area is called the second area."

They walk over to the pink star.

"Each of these sixteen lozenges represents a whole character, one of the sixteen hexadecimal items, so that one button push enters a whole character. The character is placed in the character buffer and is also added to the end of the string which is being produced in the string buffer. That is because the system sometimes may not know when the button is pushed whether the character is going to be used as a character on its own or as a character within a string."

"So how does an end user of the system get from by the turquoise star to over here by the pink star?"

"Well, there are several ways, one way uses the down button and the other ways use the up button, though using the up button means a trip up onto the patio and then back down."

"Hmm?"

"The thing is, the optional additions to the unicode courtyard started out as being so that an end user could enter strings of characters which were either of the form 'uhhhh or 'Uhhhhhh where each h is one of the sixteen hexadecimal characters. Well, the idea was that, from being over by the turquoise star in the first area, pushing the down button could generate the two characters ' and u to start the string off, set the event type to being a string event as there were already more than one character in the string buffer and then move over here so that the other four characters could be entered using the lozenges of the pink star, one button push for each character. However, I should mention that, from the turquoise star, one can only use the down button to do that when there is a null character in the character buffer. That presents no great problem as when one enters the unicode courtyard there will be a null character in the character buffer. The reason for the restriction is that the down button has a different meaning otherwise, but I'll tell you about that later if you wish." A pause. "Now that was all well and good, but you may remember that I mentioned that up then down to reinitialize the unicode courtyard was thought to cause a bit of a problem, so it was not possible to implement pushing the up button as the same as the down button except in that 'U were produced. However, it was noticed that use of 'U would always be followed by either a 0 character or a 1 character, so the patio over there was added, so that if an end user pushes the up button from by the turquoise star, then movement takes places up onto the patio. Once on the patio the push buttons have different meanings, so pushing a 0 when on the patio causes movement down here to by the pink star with 'U0 entered into the string buffer and pushing a 1 when on the patio causes movement down here to by the pink star with 'U1 entered into the string buffer. However, if someone is on the patio, there are other things which can be done. The second character being a 0 or 1 are just two of the twenty possible buttons which can be pushed."

"Ah!"

"The up button is reserved for movement to a second level of the patio, so that there is always a possibility that a second level patio could be added at a later date if desired if some other facilities are needed. The 8 button on a hand held infra-red control device, that is the VK_8 button, when used on the patio can be used to move over here by the pink star, setting the contents of the character buffer to be a null character, but without altering anything else. The 7 button on a hand held infra-red control device, that is the VK_7 button, when used on the patio can be used to move over there by the turquoise star, setting the contents of the character buffer to be a null character, but without altering anything else. "

"So, an end user can generate any unicode character on its own by constructing it from individual hexadecimal items and can also enter 'uhhhh and 'Uhhhhhh sequences into the string buffer."

"Yes, and more. There are various other things that can be done. The pink star can be used to enter a whole character and that can be used to produce a character event. So, whereas a figure 9 character could be entered by the three button pushes 3 9 enter from over by the turquoise star, as 39 is the hexadecimal code for a figure 9 character, a figure 9 character could also be entered from over here, though that would not actually produce an advantage in terms of number of button pushes as two button pushes are needed to get over here by the pink star from over there by the turquoise star, taking a trip onto the patio in order to get here. Remember that although the down button got us here in one button push it also changed to a string event and put 'u in the string buffer, so that would be of no use to get here to produce a figure 9 character as a character event. However, if one wishes to produce a lowercase e it can be convenient to travel over here then push the left button."

"But there are only a few characters available as whole characters...."

"Indeed, though there are a few other whole characters available from the patio, yet those are the ones which one might need in the particular circumstance that the Astrolabe Channel numerical pointer is being used to provide a 'uhhhh or a 'Uhhhh sequence one character at a time, in order to simulate a keyboard which produces one character at a time where the main Java program is processing the characters one at a time. The generation of a string event is useful if the input system is like a text box in an applet on the world wide web where the Astrolabe Channel numerical pointer is entered once for the whole string. If the characters are being processed one at a time, then the Astrolabe Channel numerical pointer needs to be entered once for each character which is input."

"Ah, then the characters which can be generated directly on the patio would be .... the ' character .... the U character and the u character .... and .... the Enter character."

"Yes, those can be generated, yet so can a number of others."

"Which are?"

"The minus sign and the decimal point and the null character."

"Why exactly are they needed?"

"Well, the minus sign and the decimal point are so that the unicode courtyard could easily generate a number if desired."

"Yes ..... one thing, what does the down button mean over here by the pink star?"

"Oh, add 'u into the string buffer. The down button can move someone over here from by the turquoise star, but if he or she is already here by the pink star, then it just adds 'u at the end of the buffer. And, over here by the pink star the down button can always be used to append 'u to the string buffer."

"If you like, we'll go and have a look at the commands on the patio now, though there is one extra facility which I have not yet mentioned and that is that the characters constructed from individual hexadecimal items over there by the turquoise star can be appended to the string buffer one at a time."

"Is that automatic, like the way that a whole character generated by the pink star is automatically placed in the character buffer?"

"Well, no, it's not, for a very good reason. The thing is that when one produces a whole character over here by the pink star, then it is quite clear that the character production process has been completely finished. Yet suppose that one is over by the turquoise star producing a character from individual hexadecimal items. If one enters 2 then 1 then one might have completed a U+0021 character, which is an exclamation mark, but then again one might have not completed a character, as it might be a U+021C character, a Latin Capital Letter Yogh from a medieval text; or it might be a U+21C4, a rightwards arrow over a leftwards arrow. Do you see the problem?"

"Ah, yes."

"So, appending a character which has just been generated from individual hexadecimal items to the string buffer needs to be done explicitly. It is done by pushing the down button if the character is anything other than a null character and the end user wishes to remain by the turquoise star. However, there is an explicit command which takes two button pushes, as one needs to go onto the patio to do it, and which will work even for the U+0000 character. There are various options so that after appending the character, the end user can move either to the turquoise star or to the pink star. So, if one is generating a sequence of characters such as !5 it is best to generate the ! character using button pushes 2 and 1 by the turquoise star and then use a two button sequence to go to the patio, then append the character to the string buffer, clear the character buffer and move to the pink star, as the alternative would be to use the down button to append the character to the string buffer and clear the character buffer, followed by two button pushes to move from the turquoise star to the pink star via the patio."

"So, one appends a character by one of a number of methods, depending upon the circumstances."

"Yes."

"Ah."

"There are two further matters which I might mention. One is that the three radio buttons which determine the type of event may be pushed from the patio. The other matter is that the patio also has a command for deleting. One can delete the effect of the previous button push, that is the one prior to starting the two button command for deleting."

"May I please ask, why are turquoise and pink chosen for the colours of the stars?"

"Oh, they are both colours from the standard set of Java colours which are bright and are colours which are different from the colours often used for the VK_COLORED_KEY_ buttons, so they can be used to give an on-screen indication of where the end user is in the unicode courtyard for an implementation of a unicode courtyard in a Java program on a DVB-MHP terminal. Solid stars can be used for the areas which are not on the patio and the patio can be indicated by using an outline light grey star. If a second level of the patio is added, then the second level can be indicated by using two outline light grey stars of different sizes, placed one on top of the other, co-centred, so that the two outlines can be clearly distinguished. I suppose that filled squares and unfilled squares could also be used if that looked clearer on the screen of the television, but that is up to the implementation programmer. Here inside this creative writing item we can have these expensive sixteen pointed stars set in the paving."

With that they went and looked at the patio being constructed and wondered whether the second level of the patio would be constructed one day.

 

Astrolabe Channel

Copyright 2002 William Overington

This file is accessible as follows.

http://www.users.globalnet.co.uk/~ngo/ast02902.htm