Here is the monthly micro review of (not so) random links I found while browsing the interweb lately.
Patch Workflow With Mutt - 2019. Even if I am not using Mutt for reading/writing emails (and I no longer have that many emails to read/write these days), I always find interesting to read others’ approach to email processing. This is a good read, full of interesting ideas (and not only re. GTD). In the same spirit, I like reading posts about Emacs and Org. Soon or later, they will end up on Irreal blog, so I just have to check my RSS feeds from time to time. Or I may happen to find ones myself, e.g., A Daily Journal in Org Mode. John Jacobsen’s website and Github repository is full of good ideas and tips that I like to read when I have some free time. And guess what? This site was done using Org mode (and a bit of Clojure). This site is not just about programming (e.g., l.26-97 if you ever try to solve Rosalind problems), though; see, e.g.: Reflections on a Year of Daily Memory Drawings—lovely, isn’t it?
Thoughts on Racket2. A few weeks ago I mentioned some hot news from the latest Racket conf, namely the fact that the next-gen Racket (aka Racket2?) will probably be parenthesis-free. Matthew Butterick has a much more detailed overview of the points raised by Matthew Flatt, and he has some very on the point thoughts on the future of Lisp languages.
In the case of Lisp languages like Racket, Matthew Flatt is right: among a certain audience of potential users, parentheses are a deterrent. Who knows why? But in the last 60 years, simply grabbing these dissenters by the lapels and fumigating them with the stinky garlic breath of parenthesized S-expressions has not been a winning strategy. If Lisp partisans want different results in the next 60 years, we need to try something new.
DVC is the new Git for Machine Learning projects. This sounds cool, and I will try it as soon as the opportunity arises. In the past, I have used various strategies for dealing with large files (mostly ending up in the
.gitgnore), getting rid of IPython notebooks output (removed from Git versioning using nbstripout), or managing dependencies (packrat in R, virtual environments using pyvenv in Python). This project apparently brings an extra dose of control while putting the emphasis on sharing and reproducibility.
Back when I was teaching applied biostatistics, I used to use some falied attempts by geneticians and/or bioinformaticians at using Excel to store their results (remember the DEC1 story or that paper where authors mistakenly deduplicated their data?). Now, I just found this: One in five genetics papers contains errors thanks to Microsoft Excel.
Today I learned about Codeberg, thanks to Jan-Lukas Else. This apparently is a serious alternative to Github or Gitlab, or even self-hosted Gitea instances. I do not want to switch to another Git platform—I’ve heard a lot about sourcehut recently, but it looks like people always complains about Github, and finally end up being there anyway. Next to this, Jan-Lukas had have several other interesting posts in the recent weeks, including one on rwtxt, a CMS for absolute minimalists, or webmentions, which I wish I used when I began this blog.
Alexis King posted a new blog entry, and it is a beautiful piece of work on Monad transformers and Haskell. Even if I have some hard time to follow or understand everything, I would highly recommend this post to people interested in FP, and Haskell specifically. My experience with reading ALexis’s posts, especially those that relate to Racket, is that you will always learn something, or discover new facets to questions you thought you had solved. It’s in the details (PDF), as they used to say.
Generators from Scratch is all about Python and Racket generators, one of the powerful machinery of Python, together with list comprehensions and itertools module. As you may have already guessed, Racket also comes equipped with generators, but also the
call/cc, which stands for call with current continuation.1 There is a little video at the end of the post, where Bogdan Popa uses the Racket debugger under Emacs to illustrate all this. It is quite short, so don’t be afraid to sit down and learn a bit more about Racket internals.
Plain Text Emails, Please. I have always thought about plain text emails as a way to avoid malicious code lurking into HTML divs, or simply to avoid all the fuzz about mail readers—notwithsanding the fact that it was way harder to process HTML emails under Emacs or Mutt several years ago. Apparently, there are other reasons why HTML emails became so popular, as Bradley Taunt explained.
Plain text can certainly have a reputation for looking lazy or cheap, but I feel this is mostly perpetuated in the design and marketing communities. I can assure you that your average day-to-day users are much less opinionated about your email campaign design than you are. Look to satisfy your customers’ needs before your own.