< a quantity that can be divided into another a whole number of time />

Micro posting in March

March 29, 2020


Clojure is (slowly) eating the world. Honestly, we should be thankful that the language continues to grow despite being fairly unorthodox, compared with the current norm of typed functional languages and the massive sea of object-oriented code that’s out there. It’s also the odd child in the Lisp family with its functional, data-driven, and interop-heavy approach to programming. — Clojure: the Lisp that wants to spread


Complexity often does introduce qualitative differences. Although it sounds implausible, it might turn out that above a certain level of complexity, a machine ceased to be predictable, even in principle, and started doing things on its own account, or, to use a very revealing phrase, it might begin to have a mind of its own. — Minds, Machines and Gödel

2020-03-02: A recent study suggest that “today’s CNN-generated images retain detectable fingerprints that distinguish them from real photos.” This is good news if you are concerned with deep fakes, but how will it last?
2020-03-02: Still useful to check whether your email credentials have been compromised: ';–have i been pwned?.
2020-03-02: Little known features of iTerm2.
2020-03-02: Log transform or log link?, or how to move from modeling $\mathbb{E}(\log(y)) = \boldsymbol{X}b$ in favor of $\log(\mathbb{E}(y)) = \boldsymbol{X}b$ using a GLM. A refreshing take on a topic that often gets the non-statistician reader confused.
2020-03-02: PRML algorithms implemented in Python. #python
2020-03-02: The fastai book. Free on-line edition of the upcoming book by Jeremy Howard and Sylvain Gugger.
2020-03-02: Visualizing the Bayesian workflow in R. #rstats
2020-03-03: > Effective visual systems can help eliminate that guesswork and uncertainty by creating layered sets of cues in the design and interface. — Cross-Cultural Design

The best time to make a breaking change that involves updating existing code is now, because the bad designs that result from maintaining backwards compat unnecessarily can have repercussions for decades, and the amount of code to update is only going to get larger. — Hundred year mistakes

2020-03-03: Nice post on Asemic Writing, by Anders Hoff.

2020-03-03: The upgrade process for Doom Emacs got improved recently and boosted performance are much appreciated. #emacs
2020-03-03: What beautiful pictures! (via

2020-03-03: Automating Every Aspect of Your Python Project, using Docker. #python
2020-03-03: Best Paper Awards in Computer Science (since 1996).
2020-03-03: Reading and writing JSON files in R and Chez Scheme.
2020-03-03: Recon Learn: Free and open training resources to respond to outbreaks, health emergencies and humanitarian crises. #rstats
2020-03-03: The growth of command line options. Well, that’s just 139 options for tar!
2020-03-04: Nice post and beautiful interactive design at Stitch Fix!

2020-03-04: Postgresql on Docker.

Conjugate models have the structure of a fold in functional programming, also known as a reduce or accumulate operation. We’ll show below how to compute the posterior distribution in a beta-binomial and normal-normal model using folds in Haskell. — Functional folds and conjugate models


Randomized clinical trials do not require representative patients; they require representative treatment effects. Generalizability of randomized trial findings for relative efficacy comes from one of three things: (1) true absence of interactions, (2) interacting factors have a similar distribution in the RCT as in the target population, or (3) the RCT sample has enough representation of the distribution of interacting factors to allow them to be modeled and used to estimate treatment effects in target patients, and the researcher knows to include these interactions in her model. — Implications of Interactions in Treatment Comparisons


So get yourself some Ethernet cable (and adapter, if needed) and connect your computer directly to your home or office router. This is the single most effective thing you can do to improve your remote experience, especially if you’re in an apartment complex or office. — Remote 101: Cables

And if you’re a Mac user with a post 2012 Macbook (any model), go buy yet another dongle to plug your ethernet cable!
2020-03-05: Nice series of posts by geekAbyte on learning Rust. #rust
2020-03-05: Advanced Data Analysis from an Elementary Point of View, by Cosma Rohilla Shalizi.

2020-03-05: Fraidycat: Follow from afar. (via Robin’s blog)
2020-03-05: Recursion Explained Using Sandwiches. #python
2020-03-06:   Fred Hersch, Solo.

Everything I’ve done with computers in my life has been along pretty much a single vector. And NeXT is just one more point on that same vector. In this case what we observed was that the computing power we could give to an individual was an order of magnitude more than the PCs were giving. In the sense that people want to do many things at once and you really need true multitasking. — The Machine That Changed The World, transcription by Riccardo Mori


Emacs is amazing. It’s a very different sort of thing than a code text editor like Vim or an IDE like VSCode. It’s a different way of thinking of how to interact with a computer, where you build up techniques on top of simple tricks that let you get amazing things done. — Emacs Tramp tricks

2020-03-09: A Game of Tetris. #racket
2020-03-09: How to speed up lsp-mode. #emacs
2020-03-09: Plotly Dash and OmniSciDB for Real-Time Data Visualization. #python
2020-03-09: Snakemake‘s explicit intention is to automate command line data processing tasks, such as those common in bioinformatics.
2020-03-09: isEven without modulo. #rstats
2020-03-10:   John Cale, Fragments of a Rainy Season.
2020-03-10:   Jack DeJohnette Ravi Coltrane & Matt Garrison, In Movement.

I have two high-quality CL implementations on my machine and one Scheme-derived system, also of very high quality, which created this blog: I have long ago stopped counting the number of good-quality free implementations. (…) Performance is a solved problem: yes, highly-optimised code is, perhaps, slower than optimised C or Fortran but since almost all performance problems are design problems no-one older than about 19 cares any more. (…) The library problem has been solved by Quicklisp and a large number of good-quality standard libraries. I am still using code I wrote over twenty-five years ago with essentially no modification: meanwhile the Python code I wrote ten years ago is long rendered obsolete by gratuitous changes in the language (the Perl code I wrote at the same time is doing fine, however). — Rumours of my death


The heart and soul of mathematics consists of the fact that the “same” objects can be presented to us in different ways. — Equality Is Hard

2020-03-10: Never heard of the U combinator, which “allows you to define recursive functions and I think it is simpler to understand than the Y combinator.” #racket
2020-03-10: Fast float parsing in practice.
2020-03-10: Fear of Macros, by Greg Hendershott. #racket
2020-03-10: L1 Penalty in Cox Regression. #python
2020-03-10: xkcd 936, with Python implementation (by Tim Bradshaw).

Through 20 years of effort, we’ve successfully trained everyone to use passwords that are hard for humans to remember, but easy for computers to guess.

2020-03-11:   Gary Peacock, Keith Jarrett & Paul Motian, At the Deer Head Inn.

Storage has changed a lot over time, from paper tape, to metal tape, magnetic tape, rope memory, spinning disks, optical disks, flash, and others. Progress has led to faster, smaller, and more performant devices for storing data. — The life of a data byte

2020-03-11: Happy to see there’s still some nice Stata use cases: World Bank Stata GitHub. #stata

2020-03-11: In case you wonder, COVID-19 data are already available in Mathematica (so no need to rush to Github).

2020-03-11: Self-hosted, super simple photo stream.
2020-03-11: The more I read and see it in action, the more I like Datasette.
2020-03-11: Why You Cannot (Yet) Write an “Interval Arithmetic” Library in Common Lisp, on arXiv. #lisp
2020-03-11: Database basics: writing a SQL database from scratch in Go.

So that brings us to three potential criteria for choosing inputs and pursuits in life. (1) High in quality. (2) Takes time to create and/or consume. (3) The benefits are spread over time rather than all at once. — The Problem With Extracted Versions of Things


The answer is to not even try: instead of trying to put everything inside of a castle, put everything in the castle outside the moat, and assume that everyone is a threat. Thus the name: zero-trust networking. — Zero Trust Information

2020-03-12: Awesome macOS Command Line, via Michael Tsai. #apple
2020-03-12: Stata Visual Library. #stata


Cyberpunk is both a genre and a culture. As a genre, cyberpunk was born out of early 20th century noir and fuelled through the drugs, sex and tech of 60s and 70s counterculture movements. As a culture, Cyberpunk represents a tech-savvy identity associated with anti-authoritarianism and anti-consumerism. — Tales From The Dork Web #4


Zettelkasten is German for “slip box” and is a method to manage knowledge. Basically, you take ideas from books, articles or conversations and write those ideas on note cards, collect them in a central database, and link them together so that you can start to find larger relationships between concepts you’re learning. — How to Make Yourself Into a Learning Machine, via Irreal

His (Vim-based) system for taking notes remind me of Roam, which I haven’t tested yet.
2020-03-13: Announcing rackcheck. #racket
2020-03-13: Find broken links on your website with muffet.
2020-03-17: So, first day of confinment here in France. Listening to Satie while reading from time to time, otherwise just working on a Django web project. Let’s hope the internet connection will stay up and working for the next few weeks.
2020-03-17: Circle visualization of a number’s digits in Go.

2020-03-17: Networks, Crowds, and Markets: Reasoning About a Highly Connected World.
2020-03-17: Serverless Ebook using Gitbook CLI, Github Pages, Github Actions, and Calibre.
2020-03-19: #rstats users, remember this? What’s in your .Rprofile?
2020-03-19: A set of over 300 free MIT-licensed high-quality SVG icons for you to use in your web projects.
2020-03-19: Didn’t know that WolframScript could be run with a remote Math kernel. Nice!
2020-03-19: From HN:

Netflix will reduce the video quality on its service in Europe for the next 30 days, to reduce the strain on internet service providers.

I have a hard time believing this could happen — I’m no Netflix consumer, btw, since all other French provider are actually offering their channel package for free. But I can understand the consequences of everyone connecting to internet all day along.
2020-03-19: Hardly working @home, for the moment. Just reading and checking emails, occasionally. I have lot of ideas for the blog, I know I need to do some biostats again – it looks to me like it’s just a matter of time until I launch a Twitch channel about applied biostats from the command-line if confinment persists. Yet, I could also keep reading litterature artwork as usual.
2020-03-19: If you keep browsing your Twitter feeds these days, life should be like more or less depressing, right? Stay home and cook; sometimes, you may even enjoy the sun!

2020-03-19: Illustrated jq tutorial.

Cory Doctorow has an interesting article that argues that far from being the new oil, data is actually the new toxic waste. He begins by noting that any data you collect will, sooner or later, leak and that when it does criminals will combine it with other leaked data to undo any anonymization that you’ve applied. That data is, he says, “pluripotent, immortal – and impossible to contain.” — Data is toxic waste


I use fancy tools, and I certainly do use tools that are called debuggers (like gdb), but I almost never step through my programs line-by-line watching variable values. I almost never set breakpoints. — I do not use a debugger

2020-03-20: Nice read: Product Placement, by Michael Betancourt.
2020-03-20: TIL about simul, for those of you who need to collaborate using Word.

I’ve tried LaTex, because that’s what all the cool science kids are doing, but I don’t think the hassle is worth it. Show me a LaTex evangelist and I’ll show you someone who doesn’t collaborate with Word users. There’s too much software hipster-ism out there. I think you should use the software that best gets the job done for you. — Daniel Quintena on Uses This

2020-03-20: With social distanciation and confinment, getting in touch on social networks is likely to increase, despite all the useless comments one can found on, e.g., Twitter these days. Likewise, everybody is looking for remote meeting apps, and they probably found out that remote OSS workers or gamers have been doing this for a while.
2020-03-20: Animating US population distributions. #rstats
2020-03-20: Flattening vs shrinking: the math of #FlattenTheCurve, by Ben Bolker and Jonathan Dushoff.
2020-03-20: This makes it clear that plague was progressively replaced with HIV/AIDS and flu-like syndromes.

2020-03-21:   Glenn Gould, Bach: Goldberg Variations, BWV 988.
2020-03-21: And now we are halfway thru The 100, Season 6. Mostly delayed because, you know, Apple TV, but it’s right on the point and far less depressing than the news we are served every day after all. Next in the radar: The rest of Black List (starting from Season 5), and The Expanse, Season 3 probably.
2020-03-21: Secure Rust guidelines. #rust
2020-03-21: Signal processing is key to embedded Machine Learning.
2020-03-22:   Timber Timbre, Creep On Creepin’ On.

By combining a couple of Unix command line into a pipeline you can quickly obtain answers to questions that crop up in software development, production engineering (or site reliability engineering or IT operations depending on where you work), and business analytics. In most cases such answers aren’t directly available from existing applications and other methods for obtaining them would require you to write a dedicated program or script. — Seven reasons to add Unix command line expertise to your tool chest

2020-03-22: A Human Programming Interface, in Python, to help track your data.
2020-03-22: An interesting series of new blog posts by Arthur Charpentier on modeling pandemics.
2020-03-22: Github, you’re safe with that number of snapshots!

2020-03-22: Why Discord? Because Slack sucks at some point, you know, and there we go:

2020-03-22: An erratic two-dimensional recursive function Q2. #lisp
2020-03-22: Exponential growth and log scales, or why it sometimes makes more sense to use a log(2) scale instead of log(10). See also Kieran Healy recent post.
2020-03-22: Extended floating point precision in R and C. #rstats #clang
2020-03-22: What makes forecasting hard?

Fitting simple models to the available [COVID-19] data is pointless, misleading and dangerous.


Rust has also mostly replaced Go as my go-to language for writing small performance-sensitive programs, like the numerical simulators I use a lot. Go replaced C in that role for me, and joined R and Python as my day-to-day go-to tools. I’ve found that I still spend more time writing a Rust program than I do Go, and more than C (except where C is held back by a lack of sane data structures and string handling). I’ve also found that programs seem more likely to work on their first run, but haven’t made any effort to quantify that. — Two Years With Rust


The thing about blogging is, you can just write about the things you love. A “professional” “critic” (scare quotes because who even knows what words mean anymore) has to do something else, something more difficult: manage a kind of unfolding… aesthetic… worldview? Balance one thing against the other? A blogger suffers no such burden. — The thing about blogging is

2020-03-23: About to finish the 6th of The 100… Given the obvious lack of motivation for routine work, I think the best option for the next few days is to write some Stata and Lisp code.
2020-03-23: Algebraic and geometric methods in enumerative combinatorics (PDF, 144 pp.), by Federico Ardila.
2020-03-23: Nice specs for System76 laptops.

2020-03-23: Shell scripting for personal productivity.
2020-03-23: Three typefaces for mathematics (PDF, 78 pp.). #tex

2020-03-24: Concurrent programming, with examples. #clang
2020-03-24: Modern Statistics for Modern Biology, by Susan Holmes & Wolfgang Huber. #rstats

Another big benefit of RSS is that you curate your own feeds. You get to choose what you subscribe to in your feed reader, and the order in which the posts show up. You might prefer to read the oldest posts first, or the newest. You might group your feeds by topic or another priority. You are not subjected to the “algorithmic feed” of Facebook, Twitter, Instagram, YouTube, where they choose the order for you. You won’t miss your friends’ posts because the algorithm decided to suppress them, and you are not forced to endure ads disguised as content (unless a feed you subscribe to includes ads inside their posts). — How to read RSS in 2020


De même, j’entends des histoires interminables pour la visioconférence surchargée, alors qu’en gros en général on a juste besoin d’une audioconférence (c’est sympa de voir les binettes des collègues, mais non nécessaire), plus des envois de documents. — Du mauvais usage des outils numériques et des fonctionnalités inutiles

2020-03-25: The GNU Emacs Lisp Reference Manual in ePub format. #emacs
2020-03-25: Slideas is the easiest way to create a beautiful Markdown Presentation, with all the features you need. (via Brett Terpstra)
2020-03-25: Yes to everything.

People think focus means saying yes to the thing you’ve got to focus on. But that’s not what it means at all. It means saying no to the hundred other good ideas that there are. You have to pick carefully. I’m actually as proud of the things we haven’t done as the things I have done. Innovation is saying ‘no’ to 1,000 things. — Steve Jobs


If dollar signs are good enough for Don Knuth, they are good enough for me! — Nick HighamI too mostly uses $$ for display style, instead of the recommend \[ opening brackets. This may well be because I used to write plain $\TeX$ at some point, or Context for what matters, but it is also mostly a personal taste. #tex


Programming is essentially about certain ‘data structures’ and functions between them. Algebra is essentially about certain ‘algebraic structures’ and functions between them. Starting with such familiar algebraic structures as groups and rings algebraists have developed a wider notion of algebraic structure (or ‘algebra’) which includes these as examples and also includes many of the entities which in the computer context are thought of as data structures. — The Structures of Computation and the Mathematical Structure of Nature

2020-03-26: A task manager for the command line. #racket
2020-03-26: Concurrent programming, with examples.
2020-03-26: Exercises in Programming Style: the python way.
2020-03-26: Git from the bottom up, by John Wiegley.
2020-03-26: Overload Functions in Python. #python
2020-03-26: life←{↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵}.

Log only impure actions. (…) You may still have some code that occasionally executes impure actions, but largely, most of the code is pure. If you know the inputs to all the pure code, you can reproduce that part of the code. This means that you only need to log the non-deterministic parts: the impure actions. Particularly, you need to log the outputs from the impure actions, because these impure output values become the inputs to the next pure block of code. — Repeatable execution

2020-03-27: A beautiful piano cover.

2020-03-27: Nice overview of GTD using Org-mode: A guide to my organizational workflow. #emacs
2020-03-27: A Catalogue of Software for Matrix Functions, updated for Julia, Rust and many other third-party libraries. (via Nick Higham)
2020-03-27: A Survey of Deep Learning for Scientific Discovery. #arxiv
2020-03-27: Emacs manuals with versions. #emacs
2020-03-27: Every Default macOS Wallpaper – in Glorious 5K Resolution, via Daring Fireball. This reminds me of the combined wallpaper I referred to early this year. #apple
2020-03-27: How are Unix pipes implemented?
2020-03-27: Recursive SQL Queries with PostgreSQL. #database

In general recursive queries come in handy when working with self-referential data or graph/tree-like data structures.

2020-03-27: The Books That Every Programmer Should Read.

I have to admit there are some (many) books on the list that I didn’t finish myself. If I had to narrow down the list to the 3 most important (impactful) books there those would be: Structure and Interpretation of Computer Programs, The Elements of Style, Code Complete, Thinking, Fast and Slow.
Seems, I’ve made an off-by-one error, but you’ll forgive me.

2020-03-29: I now have plenty of time, why not reading GAM in R, which I bookmarked so long ago? #rstats
2020-03-29: Since many people have discovered a passion for epidemiology these days, and are in the process of becoming apprentice statisticians, this should keep them busy for the weekend: Epidemiology for the uninitiated.
2020-03-29: Fit interpretable machine learning models. Explain blackbox machine learning.


See Also

» Micro posting in February » Micro posting in January » Micro posting in December » Micro posting in November » Micro posting in October