Wordle is a game that is a cross between Mastermind and Scrabble. I heard about it because it is really trendy. But I tried it out because Mastermind is one of the games I introduced to my nieces in August. It seemed hard for them, so I always played on the side of the person guessing, and showed them how to reason through any game (like thinking up a series of unit tests, without saying so, haha!) in order to win reliably.
I think my understanding of programming languages — ex: what role do they serve in tech engineering work, what my favorite language is — is something that continues to evolve, and has done so once more recently. Here is where I started from and where I stand:
I just came across this post/article that contrasts 2 positions — passion results in effort, and effort increases your passion — and shows how they’re interrelated. The part about effort resulting in passion (or more likely: sustained effort -> mastery -> motivation) resonates currently, especially since sustained effort is not always easy when things feel difficult or change too often. Things changing often disrupts our ability to learn, I think, because we accrete knowledge only when we can incorporate it into the knowledge structures that we’ve already built. Being in this pandemic still means avenues for people connection and mentorship are harder to come by, so it removes opportunities to make those mental connections in our mind that speed up our knowledge, and in turn, successively, our mastery, our autonomy, our drive, and our passion. As insightful and timeless as essays from Paul Graham about how to do what you love and Steve Jobs’ commencement speech are, they start with a premise of passion and don’t really mention the gritty complement of hard work. Bill Burr’s bit is still hilarious, where he questions Jobs as “Nerd Jesus”. And the news yesterday of Roy Williams retiring as UNC basketball’s coach touched on lots of issues, but one issue is the change of an environment to one where there is less emphasis on the personal relationships and player development, especially if self-development requires a high level of commitment and overcoming adversity.
A friend sent me a link to Uncle Bob’s blog post on Clojure (2019), where he explains his road from hating Lisp to appreciating it to the point where its simplicity and power makes it his favorite language. He declared it a language for the ages, just as I did. Given that Uncle Bob is a co-founder of the influential Agile Manifesto and has used several different types of languages, his declaration has more reach, and he explained it more concisely than I could, anyways. And what about Paul Graham, whose ideas have a large audience and hasn’t stopped writing about Lisp’s secret superpowers? He’s been apparently creating a new language Bel, a version of Lisp that is defined in itself, and the premise’s challenge is like a math/logic puzzle that resonates with the history of Lisp as an unintended result of implementing math theorems in a computer. But he seemed to have liked Uncle Bob’s post, and in recent years, when asked, he also recommends Clojure as the flavor of Lisp to use for modern times (1, 2, 3, 4, 5).
I just noticed that a month ago, my defensive publication was officially published. It describes two main ideas for improving virtual keyboards that I talked about previously. The first idea is that languages that use abugida scripts should use their phonemes as the keys to make an efficient and intuitive keyboard. The second idea is a higher level idea, saying that agglutinative languages should use infix/suffix morpheme suggestions in the autocomplete list.
Defensive publications establish prior art that inherently protects future implementations, in open source or otherwise, because the prior art nullifies potential future patents, including by patent trolls. So anyone interested is free to try implementing.
I’ve updated my grammar lessons for learning Tamil at https://www.learntamil.com . It should have a cleaner look, easier to view on mobile devices, and you can listen to the audio files because they’ve finally been converted from RealAudio format to a modern common format, MP3.
Rust is a new-ish language that is very compelling in certain contexts, but learning it has a really deceptive learning curve, so I wanted to provide the links that I have found most effective for slow learning beginners like myself, especially because the “official” Rust book(s) are to me paradoxically hard to learn from despite being thorough.
For people who are interested in internationalization (i18n), they are likely writing software using ICU, the gold standard library for internationalization functionality and performance. Of course, ICU is available only in C++/C (“ICU4C”) and Java (“ICU4J”), and is quite the behemoth. In order to support other programming languages directly and to support more resource-constrained computing environments (ex: mobile), we have the ICU4X the project.
The first preliminary release, v 0.1, is now official, and the current code has been published in Rust crates.io.
To received future project announcements and to stay connected, sign up for the firstname.lastname@example.org mailing list.
I presented at the Unicode Conference 2 weeks ago, on Oct. 16, on important yet overlooked issues that concern languages that use abugida scripts and have agglutinative morphology, using Thamil language as a case study. Although the talk was mainly about the issues around dictionary data sets, other issues included input methods, and the need for phoneme level segmentation for these use cases. See below for more details:
The talk covered the following topics:
I was talking with my friend about how Tamil names differ from Western names. During the conversation, we reminisced about how he was interviewed by a local radio show on how his name is “long”. I remembered feeling unimpressed by the radio segment with my friend, and it helped explain more about Tamil names.