Finding text editors that properly support the input and navigation of various scripts’ Unicode-encoded text is no longer as rare as it used to be. Unicode has been well-established for a long time as the standard for encoding all of the world’s languages. However, when it comes to text editors specifically for programmers (IDEs), ironically, the situation is pretty bad. It looks like in Visual Studio Code’s most recent update, they finally have proper support for input and navigation of abugida scripts, or as they’re alternatively called, alphasyllabaries. The animated picture in the VS Code update page shows someone typing and navigating Tamil text, but the change should actually apply to several languages across East Africa, South Asia, and Southeast Asia.
Writing systems — the ways in which we write down a language — are fascinating. They may not be as diverse and surprising as all the animals and plants of the world, but you likely may be surprised to learn just how differently we have found ways to write down information, each with strengths and weaknesses. And if you don’t get all the details right, then what you end up telling the world is not “follow your heart” but “coward”. Oops. (Countless examples exist that could fill up several blogs — it turns out failures in cross-cultural appreciation & appropriation go both ways.)
People believe that, in the timeline in human evolution, language evolves first as speech, and only later does writing evolve to record it down. For example, when new words (ex: slang) or spoken forms derived from spreading process (ex: “gonna”, “hafta”) get coined, if they persist long enough, they will become normalized and enter the vocabulary. Whether these new words are defined as “official words” depends on if you have a prescriptivist or descriptivist view of the situation, but that is a small example in our own experiences where we see writing changing according to speech. (Btw, Shakespeare was a master of introducing crazy, made-up words into a language.)
What is fascinating are some of the more apparent examples in recent history in which we make choices on how to write, or change how we write, a language, and the implications those choices have. Or in one case, it’s the other way around — it’s the act of recategorizing dialects as separate languages through how we write.
When I interviewed for my current job, I didn’t pass the interviews on the first time that I tried. When I applied again 1 year later, I passed, but I had changed my strategy in preparing for the 2nd time to correct all the mistakes I made during the 1st time.
There were other factors of my growth as a programmer beyond the whiteboard problem practice that helped equally as much, if not more so, in my success in the 2nd round of interviews. But the whiteboard programming aspect is more immediate and usually more stressful.
To help others who may need the help in the way I did, the following is a summary of how I prepared the second time:
Another wonderful episode from the World in Words podcast is “How the Basque language has survived”. There are many interesting points in the episode, making the whole thing worth listening. Below, I’ve picked out one small section from the podcast that is interesting and inspiring.
A friend of mine has just finished a novel / book of interlinked stories in which the Tamil experience is an important factor. It begins with an Eelam Tamil family grieving about the end of the war in Jersey and connects stories across time/place. There’s also a chapter/story called “The Office of Missing Persons,” which directly deals with disappearances. The book has gotten really positive reviews from some well-known writers in the literary world. It’s coming out in a month, available on pre-order (links below).
By now, I have visited enough Tamil & other South Indian restaurants in the San Francisco Bay Area to have some favorites (and not-so-favorites). Here are my favorites, “honorable mentions”, footnotes, and disclaimers. Enjoy!
I’ve finished my 3.5 year stint writing Scala, and I haven’t stopped missing writing Clojure. The knowledge of Clojure continues to heighten and inform my programmer sensibilities. One thing that I appreciated about Scala is that it was as good of a medium as you might practically find to allow writing Clojure without writing Clojure. I liked to think of Scala as the canvas on which I painted my Clojure ideas. Because Scala makes itself amenable to many styles of programming at once (at least, FP and OOP), it was possible to write code by imagining what the Clojure code would look like, and then writing that in Scala syntax. Interestingly, the more I did this, and the more faithfully I did so, the more people implicitly (no pun intended!) acknowledged the code as “good Scala code”. Because, you know, most Scala programmers agree that good Scala code puts “val”s at the top of a function body, uses immutable collections exclusively, prefers functions over (object) methods, and makes functions small, stateless, and composable. More on that later. Here, I want to simply release some of the code that I wrote in Scala to fill in a few perceived gaps in Scala’s Seq abstraction, where the perception is based on what I was accustomed to using in Clojure.
Continue reading Helper code to mimic Clojure fns in Scala