Categories
clojure programming

Why Clojure (Lisp) is good for writing transpilers

OmnICU is a new project to create Internationalization (i18n) functionality in multiple target languages and multiple resource-constrained runtimes. Two different approaches to solve that problem are wrapping a single common binary in multiple target language wrappers, and to write a source-to-source transpiler in a one-to-many fashion. Here are reasons why choosing Clojure (Lisp) would be a good decision for writing a transpiler.

Categories
general

Learning about staying safe from COVID-19

Daily life in the West has finally been undeniably, indefinitely disrupted by the current COVID-19 strain of Coronavirus. It’s important to take precautions, but the situation isn’t so dire yet that we can’t learn a little more about what & why. Here is the more useful information that I’ve come across so far.

Categories
programming tamil thamil

VS Code supports abugida scripts

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.

Categories
general

How we write down languages

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.

Categories
general

Interviewing for a tech job

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:

Categories
general

How the Basque Language Has Survived

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.

Categories
general tamil thamil

Half Gods by Akil Kumarasamy available on pre-order

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).

Categories
general tamil thamil

Favorite Tamil & South Indian restaurants of the SF Bay Area

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!

Categories
clojure java programming

Helper code to mimic Clojure fns in Scala

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.

Categories
general

Revitalizing the Hawaiian language

The podcast story “Meet the last native speakers of Hawaiian” is a fascinating story about how to revitalize a language that almost (but not quite) went out of existence. The story of Hawaii and the Hawaiian language probably shares some elements in common with the story of many Native American languages and nations/cultures/tribes. The story of Hawaii is interesting because, despite the efforts to squelch the language from existence, there still remain pockets where the language is still spoken. Similar to the story of Myaamia, a concerted effort by community-based linguists and collective support from the community was crucial. The efforts are successful in that many kids grow up knowing how to speak Hawaiian because they go to Hawaiian-language primary schools. With the basic step solved, the next-step problems take their place.