Here is the monthly micro review of (not so) random links I found while browsing the interweb lately.

  • Announcing the optics library. I must say I’m no expert at Haskell or category theory, yet I keep reading articles and books on those topics. This Haskell package is all about defining and using lenses (also known as functional references), traversals, prisms and other optic kinds.

  • The Emacs Lisp Style Guide. At least, there’s now a short and concise cheatsheet for Elisp!

  • Typed Lisp, A Primer provides an interesting discussion of the pros and cons of Haskell and Common Lisp with respect to static typing. Give it a read if you’re interested in both languages; the post is quite dense, so plan accordingly.

  • Notes on Interactive Computing Environments, by Fogus, is a short review of the book written by Barstow, Shrobe, and Sandewall in 1984. You will learn (or be reminded) about quite old software and PLs, and Fogus personal experience with them.

    Your programming environments should be an active partner in the act of creating systems.

  • The history of Tetris randomizers. Oh my, I was just remembered that tetris is more than 30 years old now. This post exposes a curated list of Tetris randomizers that were reverse engineered and documented over the years, emphasizing how they improved in terms of puzzle factor, flood prevention, and drought prevention. Apparently, most efforts have focused on the latter two points lately.

  • pingouin looks like a nice library to perform common statistical tests in Python. I didn’t try it, TBH. But I will! It is a bit different from from scikit-stats, where the focus is more on building statistical models, apparently, but there are interesting features like reliability and circular statistics that are not so common in other Python statistical packages. Quoting the authors:

    Pingouin is designed for users who want simple yet exhaustive stats functions.

  • OpenBSD Is C Documentation: As I’m working as a bioinformatician now, I am sometimes tired of checking all related publications to understand the meaning of default parameters here and there in the tools I am supposed to use. Good documentation is the clé du succès of a good software. You can learn a lot by studying the code available for free in your preferred *nix system (think of cat, shuffle, jot, etc.). And if you’re still versed into C, this post will explain why you should take a close look into the OpenBSD documntation.

  • Programming Algorithms: Key-Values: I have been following this blog for the last few months and it’s always nice to see new posts showing up. This post is on data structures, like the preceding ones, and this time the author disusses the broad application of key-values, also called map or dictionnaries in other dynamic PLs. Hash tables, but also trees–which don’t require hashing–should sound familiar to functional programmers. This post also features a nice overview of memoization and cache invalidation.

  • bambi: Yet another Python package for those interested in Bayesian modeling. I haven’t tested nor installed the beast–I tend to be very minimalist these days–but I would love to see a benchmark of bambi against popular packages available in the Python ecosystem, like PyMC3 or PyStan.

  • Robust Arithmetic in Computational Geometry is a playground about numeric robustness issues in computational geometry, dealing almost exclusively with orientation tests (how to decide whether a point lie lies to the left or to the right of a line). This is based on an older project in JS which is available on Github: Robust arithmetic in JavaScript, but I really enjoy browsing Observable notebooks from time to time.

Interesting posts that I’ve read lately:

  • Recently by Tom MacWright, especially his thoughts on the Enigma machine that he published on Observable.
  • The path of least resilience: Using Vim templates, I use Vim occasionally, which means for quick editing tasks (i.e., when I know I will only have to type some text, like my micro posts or some shell scripts, or even some Python code), but I’m definitely an Emacs user; that being said, I always like to see how folks manage to get things done with their preferred text editor.
  • I test in prod: Yeah, what else? More seriously I agree with the author that results gathered from tests when a software is running in real conditions are more interesting, and certainly more trustful, than anything else.
  • Clever functional design: It’s always a joy to read one of Fred Hébert’s post.