Clojure's keyword namespacing convention Considered Harmful

June 29, 2020

Thank you for taking the bait of this inflammatory and simplistic title. I promise you that the rest of the article will be more reasoned and nuanced.

In summary: for far-ranging data attributes, such as database columns and API fields, I recommend namespacing keys using 'snake case', contrary to the current Clojure convention of using 'lisp-case' (for example: favour :myapp_user_first_name over :myapp.user/first-name), because the portability benefits of the former notation outweigh whatever affordances Clojure provides for the latter. This is an instance of trading local conveniences for system-wide benefits.

Continue reading →

Using Decision Trees for charting ill-behaved datasets

May 15, 2020
Continue reading →

How covariances behave: some intuitive views on normal distributions and Gaussian Processes

January 31, 2020
Continue reading →

2 proofs in Information Theory: channel-convexity of Mutual Information

December 18, 2019
Continue reading →

Inferring the Earth's tilt from day lengths

December 3, 2019
Continue reading →