This morning I gave a Computer Science Internationalization Workshop to school students. Twelve students attended my workshop which lasted just over two hours. As is my usual practice for such workshops, I made a list of topics to cover and more topics than could be covered in the time available. I then adapt as necessary. I placed emphasis on incorporating world cultures into one's thinking and programming practices. This was a participatory workshop so the students were fully involved.
I started the workshop by saying: Bon Matin, Guten Morgen, 안녕하세요, おはよございます, 早上好. So, right from the start, it is evident that this workshop is international in nature. I explained that one does not need to know multiple languages in order to build software for the world but one does need to understand characteristics of human language scripts. Chinese is much more compact than English which gives a big advantage when using microblog services which have a character limit, twitter now has a 280 character limit. Chinese and Japanese do not use spaces to separate characters and so detecting word boundaries is much harder than English which uses spaces and punctuations characters to separate words.
Topics covered in this workshop included:
- McDonalds I explained that common practice with global companies is to have a global gateway which has a set of links to their localised websites. Starting at UK Mcdonalds I asked the students to, without googling, find the McDonalds global gateway. It used to be possible but is no longer. I am not sure why McDonalds removed the link. Next I asked the students to find the global gateway but this time they can google. They soon found it. I explained: the way I found it was by using Opera with VPN set to America, visiting McDonalds USA and on their page was a link to the global gateway corporate.mcdonalds.com/mcd/country/map.html. I then asked the students to explore the different localisations and look for differences in foods and styling to the UK website. Next was the Asia Pacific section of the global gateway. I told the students there is a problem and then asked them what the problem is. The problem is that for China the icon displayed is Youtube but the link is actually for the Chinese video service Youku i.youku.com/u/UMzg1MDY4MTg0. I explained: China blocks access to many sites and services, youtube and twitter are blocked in China.
- Writing names correctly: Next was how to write my name correctly ie André and not Andre. First I asked the students to write André. They discovered that by holding down the e key down a popup appears showing e combined with various diacritics. Next, using the keyboard viewer, I showed the general procedure: hold down the alt key to see all the diacritics supported by that keyboard mapping, release the alt key to see all the letter/diacritic combinations supported by the keyboard mapping. We used the ABC - Extended keyboard mapping.
- Writing Chinese: Next was the basics of writing Chinese using the pinyin Simplified Chinese Input Method. I tasked the students with writing: xiao shan (小山), dian you (电邮) and zai xian (在线). Some of you will have already worked out which way this is going😀 Put these Chinese characters together and we have my Chinese email address 小山@电邮.在线. I explained: "We are on the threshold of a huge growth in registration and usage of internationalised email addresses. Rajasthan recently launched a Hindi email service whereby residents can have a free hindi email address. There is a group dedicated to promoting usage of internationalised domain names and internationalised email addresses by the name of UASG (Universal Acceptance Steering Group)." I then tasked the students to read and browse uasg.tech.
- Character counting: Next was character counting. I had 2 text strings: ① one (two)! [three] four five. ② pear(plum)grape!apple. I asked: from a computer's point of view, how many characters are there in these text strings. Reader: I will let you count for yourselves😀 I explained: "the brackets are full width forms and so what might be a space character followed by an opening bracket is in actual fact is just a single character. Such characters are used in Chinese and Japanese as every character, including punctuation, has the same width."
- Numbered webpage lists: The next task was a numbered list. I had a pre-prepared html template which the students used. We started with a standard decimal ordered list. The I showed the students the inline CSS — <ol style="list-style-type:thai;">. I then tasked the students: "Without googling, guess at language names and try them with the list-style-type." Next task was: "You can now google. Find the valid list-style-type language names." Several quickly found developer.mozilla.org/en-US/docs/Web/CSS/list-style-type which is a page I frequently use. I also showed codepoints.net/search?gc=Nd to show how many different numbering systems there are which will all, hopefully, be supported at some time in the future.
- Rotating Unicode Characters: This programming challenge was, using CSS, change the Unicode character 👀 from right looking to left looking. I allowed googling right from the start. I did not use the word "rotate" or rotating when giving this challenge. Yesterday I wrote a blog article for this challenge. I showed this blog article briefly towards the end of the workshop 👀 ➜ schappo.blogspot.co.uk/2018/01/computer-science-internationalization_16.html. In my blog article I demonstrate a cultural application.
- Language Adaptive Web App: In my introductory web programming module, I write demonstrator code for lectures which I then make the source available to the students to use or not use, as they wish. The web app I used in this workshop was one that is language adaptive, English and Chinese. I firstly showed the school students how to change the "preferred language for webpages" which is set by users in preferences. I used Firefox for this demo. I firstly showed my Web App with my Firefox set to preferred language = English. So the text in my buttons was in English. I then changed the preferred language to Chinese. Refresh the page and my button text is now in Chinese. I emphasised that this does not happen automatically and it does require programming to make it happen and again with most everything else I did in this workshop it is simple to do. I showed my source code. The crucial statement is: if(/zh|zh-CN|zh-TW|zh-SG|zh-HK|cmn/i.test(navigator.languages[0])){.... One thing I forgot to do was show my CJK version of my web app in which I have changed every identifier to Chinese, Japanese or Korean😀
- Unicode: I explained: "There are 136000+ characters in Unicode. In ASCII there are just 128 characters. Each Unicode character has a unique codepoint and when represented is usually prefixed with U+. The Unicode consortium guarantee that once a character is officially included into Unicode, it's codepoint will never change. The Unicode character set is continually being developed and a new version is released every summer. Anyone can submit a proposal for character(s) to be included into the Unicode character set. There is a Unicode Consortium group which deals specifically with Emoji proposals as Emoji are hugely popular." I then tasked the students to browse the Unicode character set using the "Emoji & Symbols" viewer.
- Regular Expressions (regex): We visited speakerdeck.com/andre_schappo/unicode-regular-expressions. I quickly went through some of the ASCII based slides. I stated: "If you search the net you will finds thousands upon thousands of ASCII based regex examples and explanations but what you will not see is...". I then proceeded to slide 11. I explained the cultural references and humour in slides 11,12 and 13. This is a good example of how world cultures can be incorporated into one's programming practices.
- A programming challenge: I finished with a programming challenge ➜ jsfiddle.net/coas/wda45gLp. I briefly explained the code but did not have time to show my solutions to the challenge.
During the workshop I said: "One problem is that there is no culture of programming internationalisation in school, college and university Computer Science departments. Therefore, staff and students do not even think to ask themselves questions such as: "I wonder if it is possible to number html list with numbers from other languages?". If they did ask themselves such a question then a quick google and they would soon discover that it possible and it is so easy to do.
I did not have much opportunity to chat with the students but one student told me: "In his school, they are only taught ASCII programming and ASCII text processing. He learned about Unicode by his own efforts and outside of the classroom." This is typical of schools, colleges and Universities. Unicode is not being taught but it most definitely should be taught.
I concluded with: "I hope you will teach your classmates and teachers about Computer Science internationalisation. If your school would like me to visit and give a workshop or presentation, I am more than happy to do so. All I ask is that my visit expenses are paid by your school.
Readers of this article: I extend the same offer to you. If you would like me to give a workshop or presentation on Computer Science internationalisation at your company, organisation, school, university, I am happy to do so. All I ask is that my expenses are paid. Computer Science internationalisation is my specialism and my passion. I can talk for hours, days, weeks, months, years about Computer Science internationalisation😀 I am not hard to find on the internet but one way of contacting me is to tweet me at twitter.com/andreschappo
Workshop participants: I hope you enjoyed this workshop. I enjoyed giving it. If there is anything I have forgotten that you would like to see included in this article, please email or tweet me. During the workshop there was not sufficient time to show you a youtube video in which Chris Broad explains one of the ways in which Japanese people celebrate Christmas. See ➜ youtube.com/watch?v=SFw-TZzqX8M. Can you spot the word play in the name of his youtube channel?
Eddy Dunton, a workshop participant, emailed me this feedback: "Overall I thoroughly enjoyed it, it touched on a topic which I had never even thought of, never mind thought to address, furthermore I thought the structure was good and it never felt like it was dragging. Personally I think it could benefit from more practical activities, although the ones we did were good quality, I didn’t feel there was enough of them. It would also be interesting to comment on the cultural differences on the different McDonald’s pages (for example I noticed the US page focused on the price of the food whereas the UK page pushed the healthier options)."