skip to content

Department of Computer Science and Technology

We have been reminded how deep the cultural assumptions of open source and community computing can go.

We have been observing a Biomaker Challenge workshop in Bahir Dar, organised by friends including Jim Haseloff from Cambridge Synthetic Biology, Sewnet Alemu, who is Director of the brand new Bahir Dar maker space, and Sophie Mower from the Centre for Global Equality.

The goal of Jim’s Biomaker Challenge events is to encourage cross-disciplinary design of scientific instrumentation and control equipment, through teaching use of the XOD programming environment with Arduino boards and peripherals. Following similar events in Accra, in Cambridge and elsewhere, the Bahir Dar workshop has over 30 participants, mainly students from mechanical, civil, electrical and software engineering. 

Some are already very skilled, such as Eden Melaku, a fifth-year undergraduate in software engineering who we had previously met at the Bahir Dar ICT4D centre. Her final year project proposal is to develop a deep-learning implementation of Text-to Speech Synthesis (TTS) for use in Amharic language dialog systems.

At the Biomaker Challenge workshop yesterday, Eden installed XOD tools, configured hardware, and completed introductory exercises like blinking a light and sounding a buzzer. Toward the end of the day, she connected a  2-line LCD display to the Arduino board, confirmed a test display, then sent an Amharic text to the display - the rather disappointing result can be seen in the top line of the picture below. Given her research interest and background, this seemed exactly the right thing to do, so I worked with her to find out what went wrong.

Eden Melaku with an Arduino display not displaying Amharic

As would be true of most computer science students today, Eden had not previously encountered a display that is character based rather than bitmapped. It can be surprising to see a device that does not support Unicode characters, and cannot use different fonts. It seems that these commodity displays now all rely on the Hitachi HD44780 LCD controller, and that the Arduino LiquidCrystal Library assumes this.

This chip has a character set hardcoded in ROM - according to Wikipedia, two versions exist: the standard (Japanese) version, which includes katakana characters and some Greek letters, and a European version, with Greek, Cyrillic and European accents. Of course, no Amharic version has been created, with support for the Ethiopian Ge’ez script.

In principle, custom character definitions can be downloaded to the Hitachi controller - but only 8 of them, meaning that it can be used to display text with no more than 8 unique characters. It turns out that I am lucky - a phonetic Amharic version of my name does only include 8 distinct characters! The Arduino library for working with this controller does have a createChar() function, but the XOD node for controlling LCD displays does not currently support this. Eden was totally up for modifying the XOD source code. (After first posting a message to a forum to ask why someone else hasn’t done this already!)

So … success? A typical day at a hackathon, in many ways, just working around the limitations of the tools available. But when we are here specifically in order to work outside the assumptions of our Cambridge cultural bubble, this is a useful reminder of the infrastructure constraints that can undermine otherwise sensible plans.