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.
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.
The podcast story “How the Miami Tribe got its language back” is really fascinating. The Myammia (“Miami”) tribe and language lost its last speaker decades ago. The story of how and why the language went out of usage is not pleasant, but worth knowing. Regardless, thanks to the work of early linguists during the time when the language was spoken, there were historical records of the language (vocab, pronunciation, and perhaps grammar). And thanks to the interest of a Myammia descendent, a linguist, and a seed amount of resources, a lot of work coalesced in reviving the language into something that is spoken by a few hundred people on some basis. For a language that had completely died decades ago, that’s remarkable. Hearing the full story is worth it, especially for certain tidbits that do not appear in the written article.
The new post from the Google Design blog entitled “The New Wave of Indian Type” is very interesting. The differences already noticeable in the examples of Tamil fonts in the blog post are already striking. And the blog post, of course, is showcasing fonts with open-source licenses and encouraging people to use them as starting points to create their own. I like these ideas very much.
If you have seen the talk that Tim and I presented at Clojure/West in October on Learning Clojure through Logo, it should come as no surprise that topics of education, technology, and language are of interest. A couple of recent articles were published that caught my attention:
The Tamil Internet Conference in 2018 is taking place on July 4-6 in Coimbatore, Tamil Nadu, India. Anyone interested in submitting papers should do so before March 30 (see the above link for further details).
In my previous job, I had a basic grasp of writing a SQL query, but I was never quite comfortable with “advanced” queries. (By “advanced”, it’s more like intermediate at best — it’s the nuances of joins, group-bys, having vs. where.) I was told that whatever SQL I didn’t know would be “easy” to pick up and would happen naturally, although in practice that never quite happened. It wasn’t until I started to come up with a system for solving interview-style programming problems that I started to similarly come up with a system for writing any SQL query. The following is the result, which is less of a “tutorial” for “beginner SQL” and more of a systematic process for constructing a SQL query:
Here are my sequential steps for writing SQL queries in a somewhat methodical way. YMMV.
Note: ‘key’, ‘column’, and ‘field’ are used interchangeably.
The last 18 months have been eventful even if my updates have been sparse. Here’s a quick rundown of some of the things that I’ve been up to:
- Published a blog post on the Google Open Source blog regarding clj-thamil (Thamil NLP and macros for “multi-lingual” Clojure) and clojure-turtle (Logo in Clojure) (Mar. 2016)
- Attended Clojure/West 2016 in Seattle and gave an Unsession presentation called “Keeping Simple Things Simple”. The conference was as rewarding for the people I got to meet as it was for the talks and ideas that I learned, which is saying something for a Clojure conference. (Apr. 2016)
- Volunteered with other people from Nest at the Brothers Code event in Oakland by the Hidden Genius Project to get Black male youth in the Bay Area interested in tech. (Dec. 2016)
- Attended the GCP Next conference in SF (Mar. 2017). I enjoyed the conference, especially the festive exhibits and some of the conversations with Google employees.
- Attended Clojure/West 2017 in Portland. The conference was great, and it was probably the first time where I attended the “hallway track” for a majority of the time. (Apr. 2017)
- I got quoted in a GCP Dataflow blog post on Dataflow Shuffle. (June 2017)
- Presented (via paper and slides) about prefix trees and other topics for Tamil / Indic Unicode at the Tamil Internet Conference in Toronto (Aug. 2017)
- Attended Clojure/conj 2017 in Baltimore and co-presented with Tim Pratley “Learning Clojure through Logo”. I also manned the booth for Nest. It was a great time talking with people, old friends and new, and seeing a great Rich Hickey talk in person for once. The talk introduced Power Turtle (github proj page), lein-cban, and cban. More work to be done on Power Turtle. (Oct. 2017)
- Volunteered again with the Nest team at the Brothers Code event by Hidden Genius Project. Displayed Power Turtle along with copies of this handout. (Dec. 2017)
Happy New Year, and hoping that 2018 is a good year!
The Tamil Internet Conference for 2017 in Toronto, Ontario, Canada just concluded. I presented a more in-depth explanation of my previous post on prefix trees along with specific examples of how I have used them.
Here is the full paper that I submitted for the conference proceedings, entitled “Prefix Trees (Tries) for Tamil Language Processing”. Here is the slide deck for the presentation I gave in the conference.
The following is the full text of the paper from the link above:
I recently was tasked with performing an ETL task that should be done as efficiently and quickly as possible. The work led me to learn more about parallel and distributed processing in Clojure. In addition to having a greater appreciation for what Clojure enables (once again), I also pushed the boundaries of what I thought is possible using the available tools. I ultimately ended up writing a Spark job whose executors are each running N threads (currently, N=3). But the path to that solution taught as much by what didn’t work as much as what did work.