This blog has been on my to-do list for a while now. It has been a month since I went to IndiaFOSS, and I could finally finish it thanks to my retreat at the Isha Foundation in Coimbatore, and to two days of an Instagram-free life that let me collect all my thoughts and put them into a document in less than a day.
Writing invariants gets treated as an art form, which is a polite way of saying nobody can explain how they do it. “Art is long and life is short,” said Hippocrates, a man who never had to read a 2,000-word post on formal methods. So I’ve tried to keep this one short.
As someone with a standing interest in languages, I find myself perpetually on the lookout for the features that belong to one language alone. Every language has its flagship concepts - words that resist translation, and that frequently cannot be mapped one-to-one onto any other.
“You start problem-solving with mathematical thinking. To obtain a solution, you extend it to computational thinking. But to actually implement it on the computer, you need algorithmic thinking” Prof. CPR
A couple of weeks ago I travelled to Bangalore for a hackathon at the Indian Institute of Science, organised by Prof. Siddharth Gadgilreference for Prof. Siddharth GadgilProf. Siddharth Gadgilmath.iisc.ac.in/~gadgil and Emergence AI. The structure of the hackathon was: spend the first couple of days getting taught Lean4reference for Lean4Lean4lean-lang.org by Prof. Siddharth Gadgil and Prof. Prathamesh T. V. H.reference for Prof. Prathamesh T. V. H.Prof. Prathamesh T. V. H.krea.edu.in/sias/dr-t-v-h-prathamesh, then disappear into a cave for a weekreference for cave for a weekcave for a weekyoutube.com/watch and emerge with a project. The judges were Anand Rao Tadipatrireference for Anand Rao TadipatriAnand Rao Tadipatridl.acm.org/profile/99661086046 and Sidharth Bhatreference for Sidharth BhatSidharth Bhatgrosser.science/team/bhat; both PhD students in mathematics at the University of Cambridge.
Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.
Before you think I’m crowning Lisp as God’s own language after just one blog stint at a coding exercise, hold your horses. I’m not here to bash Object-Oriented Programming or its design patterns. In fact, I believe it’s crucial to know these patterns inside out. Only then can you play the game of ‘Design Pattern or Anti-Pattern?’ with any confidence. Remember, these musings are all from my little corner of the world and don’t reflect the hard work of other developers who’ve been sweating over StarPlat.
Happy Birthday to Me: Musings on Language and Code
Today, I find myself celebrating my birthday in the tranquil confines of a cozy Airbnb in Vancouver. It’s a momentary escape from the pressures of work, a rare breather amidst the ever-present demands of the office. Through the frost-touched window, I watch the Canadian flag battle the icy winds. Below, I can hear the faint murmurs of a French-speaking couple, my neighbors. A little later, the cadence of Mandarin reaches my ears, no doubt my landlord going about his day. And then, the phone rings. It’s my mother, calling from home, so naturally, the conversation begins in Bengali. When my father takes the phone, we switch seamlessly to Hindi. After the call, I set the phone down, open my laptop, and begin composing an email in English.