Names Matter

An acquaintance once related to me a story about the power of living with your name. When she migrated from her country of birth as a child she spent the entirety of her childhood and most of her young-adult life unsure of her name, as most adults of authority in her life could not understand how to pronounce it, and therefore spent a large swath of her life cripplingly unsure of herself. For some people, many people, living with their correct name is important.

It feels slightly silly to note explicit support for non-ASCII characters in this era. However, I have experienced diagnosing legacy applications for issues concerning the display of names and non-English words only to find the culprit is database encoding or imprecise sanitization. Ultimately, be aware there is a certain trajectory in the history of most technology that often favors English characters and if you wish to support an equitable experience you’ll have to exert extra effort.[1]

Similarly, depending on your use case, you’ll need to be aware of the character range supported by your chosen font stack.  In cases where you need to manually address support, and comprehensive fallbacks are not available (like the Noto font family), you can always directly affect characters via unicode-range.

When building directories I often wonder if there’s a flaw in how we, by default, envision names and their use in our applications. Typically you offer a “first name” and “last name” field to elicit names from users. You combine the fields for display and use some combination of the fields to sort a person in a list. This works fine in a culture where everyone has two names. This is not necessarily typical outside the Western world. Names can be arbitrarily short or arbitrarily long and the Western concept of how names must be is equally as arbitrary. I would like to offer a better model of envisioning the management of these names, though I doubt it originates with me. We still offer two fields. One is the display name, no restrictions and arbitrarily sized. Another is the sort key, which you use to place a person in a list. The combination of these two fields used in this way should meet almost any situation you need and separates the concern of how a name is sorted with how a name is displayed.


  1. UTF-8 Everywhere, What every programmer absolutely, positively needs to know about encodings and character sets to work with text, How to support full Unicode in MySQL databases ↩︎

·