I’ve accidentally skipped writing here about things that I’ve done here and there. It’s easy to to not follow up after someone puts up a post or a video that is easy to point to, in the thought that the content speaks for itself. But in reality, there’s usually more to say. Often times, you just have to dig under the surface, ask questions, and look for connections. Anyhoo, here’s one such set of things that are related to each other (and related by design!).
Writing Programs in Other Human Languages
After writing about the topic in 2014 and mentioning before the event that I would present on it at Clojure/West 2015, I never actually specifically pointed to the presentation recording itself. So here it is:
I also didn’t mention the fun little pre-event interview I did.
Teaching Programming in Clojure
As I mentioned from the beginning, I didn’t think of programming in other languages as a practical reality for professional programmers. People might write source code variable & function names in their own languages like French or Russian if they’re working primarily with other speakers of their language, but that’s not common; it’s usually in English. Rather, I always thought that if there was a use case, it would be in teaching programming.
In 2016, I had creating a project to help in making it easy to learn “serious” programming in the way that I learned to love programming (not the ways that I learned to hate it or find it cryptic!). More specifically, I implemented basic commands of the Logo programming language within the Clojure programming language. My long term interest was to see how these ideas connected.
To promote the new project repository, I wrote a post on the Google Open Source blog, called “Teaching kids to program in their native language”. The post, in effect, was talking about not just the project repo, but also the potential connection of the ideas from this project and the previous project. It’s cool when people mix different ideas together to come up with something uniquely insightful. I felt this was one such instance. And to date, I still need to push on this further to make it truly useful, not just “interesting”. One day…. One thing at a time, until then.
Guess what the reaction was, though? Mind you, this was March 2016. And as an online post, the reaction is an online reaction. Well, I was dismayed to see the reaction on Hacker News, basically amounting to “This is pointless” and “Why can’t everyone in the world just learn English?” and “I’m sick of all this political correctness”, just not in exctly those words. Since the 1990s (?), the phrase “political correctness” became widely used by people who were reactionary against speech that was made to be inclusive of people who are underrepresented / discriminated due to aspects of their body / identity. The negative reactionary sentiment portrayed such speech as skewed, contrived, or politically calculated (lacking authenticity). Sometime in the mid-2010s, the term “woke” arose as a complimentary adjective to describe someone who is thoughtfully inclusive. Not long after, the same cynical reactionaries who used to say “politically correct” with a sneer appropriated “woke” to have a similar cynical connotation. Since 2021, the sneering term du jour became “CRT” (Critical Race Theory), and since 2023, it has morphed into “DEI” (Diversity, Equity, and Inclusion). So much for Hacker News being special and a better version of Reddit than Reddit… The Clojure community is small but wonderful, as they were back then, too. I was shocked by the HN reaction. Needless to say, I was blindsided by the UK Brexit vote in July 2016 and the US elections in November 2016.
Putting it together
Tim and I teamed up to put it all together. Tim created power-turtle.com that combines an ClojureScript REPL and a webpage with clojure-turtle and inspiration from clj-thamil. The result is a self-contained webpage that lets a user issue commands on one side of the page, and see the result on the other side of the page. It lets you type commands in English or in your own language, if you contribute the translations for your language to cban, which we created together as a plugin to extract only the functionality of clj-thamil that we needed, and to make it a compile time step by making it a plugin. And Tim took the whole power-turtle project many steps further by adding different types of interactive visual output.
We talked about this at the Clojure/conj in 2017. You can see us demonstrate the result of what we created, how the origins of Logo related to theories of knowledge acquisition, and the underlying reasons why our project is a useful way to teach people how to program in current times:
You don’t always get feedback from people. If you help them in a profound way that takes time to materialize or isn’t obvious (ex: teaching, prepare them for a job interview), they don’t always let you know the good news of that impact. Rarely do people admit their mistakes and apologize. For the above talks, it was really great to hear from the Unicode intern this summer, Chris, that he really enjoyed watching the above talks as well as Simple Made Easy. As a rising junior in CS in undergrad, my hope was just to expand his horizons while he was doing good work for us, particularly CLDR. He said they his other part time job during the summer was teaching kids to program, so he especially found the talk on Power Turtle intriguing. His boss at the school he teaches created the curriculum around Scratch, but is too self assured to accept feedback. Even so, Chris thinks that there is more to programming than just Scratch, and that’s why the talk opened his eyes. There’s more room to make Power Turtle beneficial for others.