2019-12-02: TIL about pipupgrade. So much more convenient than manually checking the results of
pip3 freeze | cut -d = -f 1 | xargs -n 1 pip3 search | grep -B2 'LATEST:', or blindly apply
pip3 freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs pip3 install -U.
2019-12-02: How to RiiR.
2019-12-02: Taking ML to production with Rust: a 25x speedup.
2019-12-02: mdBook is a utility to create modern online books from Markdown files.
2019-12-03: Martin Tingvall, The Rocket.
The generation of random numbers is too important to be left to chance. — Robert Coveyou
2019-12-03: Fourth website on the go… Now playing with Django, and it’s just whaou!
2019-12-03: TIL about https://rentry.co, a simple Markdown pastebin that allows you to post some words on the internet.
2019-12-03: A Multiset of Observations With Constant-time Sample Mean and Variance.
2019-12-03: Perl Advent Calendar 2019.
The choice of a first language is what sociologists call a wicked problem. The notion appeared in the context of social policy and identifies problems that cannot be definitely described. Solutions to wicked problems “cannot be meaningfully correct or false; and it makes no sense to talk about ‘optimal solutions’ to [wicked] problems unless severe qualifications are imposed first”. — What to teach as the first programming language and why
We’re in danger, I think, of treating everything as if it’s some measure of our productivity. Number of steps taken, emails replied-to, articles read, podcasts listened-to. — Why I Listen to Podcasts at 1x Speed
2019-12-04: Interestingly, rio relies on the
data.table package to read/write plain text files, and always return a simple data frame (even when using Haven to import Stata files).
2019-12-04: A list of of Haskell articles on good design, good testing.
2019-12-04: Racket solutions & explanations for the Advent of Code puzzles, by Matthew Butterick.
2019-12-04: The most copied StackOverflow snippet of all time is flawed!
2019-12-04: racket-review, a surface level linter for Racket modules.
Here’s the thing that’s always rubbed me the wrong way about Google. They’re insulting. Steve Jobs, Jeff Bezos, Bill Gates — I completely believe they’re all geniuses. But they never seem(ed) condescending. — A letter from Larry and Sergey
Nulls are the most talked about example when it comes to the benefits of strongly-typed functional programming, and indeed being able to use your function parameters immediately without having to do any null checking at all is very nice. — How does Haskell make your life easier
2019-12-05: Really nice work, by Anamaria Crisan: Adjutant: an R-based tool to support topic discovery for systematic and literature reviews.
2019-12-05: While I’m tinkering to understand the internals of Django, I stumbled across this nice gem on HN: (via @thorstenball)> Hopefully, the next guy to join the company will clean up your shit. The other guys code may not look like shit, but it doesn’t solve any useful problems… so they never got the chance to hire that next guy.
2019-12-05: Working from home today (because the strike). It’s been a while…
2019-12-05: A visual guide on troubleshooting Kubernetes deployments.
2019-12-05: Depth of Field with Colour Shift. Lovely.
2019-12-05: GitLab vs. GitHub: Comparison of Features.
2019-12-05: Inferring the mammal tree: Species-level sets of phylogenies for questions in ecology, evolution, and conservation.
The TL;DR is that experience, domain knowledge, and discipline are actually the best predictors of startup success and that most successful startup founders are middle aged (mean of 45 years old for the 1 in 1,000 highest growth new ventures) rather than the 20 year old who drops out of school to follow his dreams. — The Myth of the Young Entrepreneur
What Medium isn’t is a generic blogging or publishing platform. It’s narrowed its focus into being more like a magazine that everyone can contribute to (and I’m told that more changes are coming in the New Year). In doing so, it inevitably loses some of its early users - and it adds features like a paywall that may drive some casual readers away. — A Medium dilemnaSure, but can they just stop the noise with their banner that popup from nowhere?
2019-12-06: Alexa, Say No to Chrome.
2019-12-06: Almost done with the first 50 Rosalind problems on the Bioinformatics Stronghold.
2019-12-07: TIL about a very nice archive of posts on Racket, by Jay McCarthy.
2019-12-07: Suppressing the macOS Software Update Alert Icon: In case you want to stay on Mojave a bit more but are tired of daily notifications.
2019-12-09: Recording screencasts with Emacs.
2019-12-09: shrynk - Using Machine Learning to learn how to Compress. Interesting discussion on how to combine flat structured files (e.g. data frames) using fastparquet, pyarrow or CSV + compression (TL;DR
csv+bz2 is the definitive winner).
(a) More mnemonic names tend to be over-specific (not all cdrs are tails), and (b) after a week of using Lisp, car and cdr mean the two halves of a cons cell, and languages should be designed for people who've used them for more than a week.— Paul Graham (@paulg) October 15, 2019
A cons is really just a 2-tuple, and the halves don’t have any particular meaning on their own, even as “head” and “tail.” However, maybe this is really important to you so you want to do it anyway. What’s the best way to go about it? — Efficient Alias of a Built-In Emacs Lisp Function
Most weblogs are unfunded, spare-time ventures, yet most webloggers update their sites five days a week, and some even work on weekends! — Rebecca Blood, The Weblog Handbook
2019-12-10: Computational Photography From Selfies to Black Holes.
2019-12-10: The origin of CAR and CDR in LISP.
2019-12-10: Why databases use ordered indexes but programming uses hash tables.
Having a website and/or blog is not about being a web developer, nor about being a celebrity of sorts, but is about being a citizen of the Web. — Why I Have a Website and You Should Too
It’s not about hoarding the riches for Twitter: it’s about baking an ever-increasing pie that everyone can have a slice of. — Twitter’s Project BlueskyOn a related note (re. Twitter, not decentralized social networks), I recently reduced the number of people I was tracking (1200+) to less than 390 and my timeline has become much more readable. I believe the noise was mostly coming from too much RTs from folks I followed once for some interesting threads but whose own tweets flow did not last over time. My own centers interest have surely evolved as well. Apologies for those I’ve unfollowed and still follow me on Twitter. I can’t promise I’ll come back someday, but you have this micro-blog in the meantime.
The terms “blockchain” and “distributed ledger technology (DLT)” are very often used as synonyms. Guess what: they are not! — Blockchain vs. DLT: What’s The Difference?
2019-12-11: I just plugged this good old
fci-mode into my Emacs config. Indent guides were already a really nice add-on, but the 80-char ruler is really useful if you’re versed into PEP8 and the like.
2019-12-11: DockerSlim: Minify and Secure Your Docker Containers.
2019-12-11: How to speed up the Rust compiler one last time in 2019.
2019-12-11: Intro to web dev (v2).
I know a lot of people dislike semantic versioning. They hate how requires incrementing the major version number every time a breaking change is made.
> I consider it to be a good thing.
> You should pause and carefully consider making a change that will break people’s current code.
> You should be ashamed if your project is at version 43.0.0 because you’ve made 42 breaking changes. That’s 43 times you’ve disregarded your users’ time! That’s a bad thing! — Volatile Software
Writing Isn’t Magic; It’s Hard Work
> I used to struggle to get my thoughts onto the page because the first time I put them down, they were complete crap. The second time I put them down, they were also crap. And the third time. And the fourth time. And the fifth time. But each time, what I was writing got a little bit better, and eventually I realized that by approximately the fiftieth time I revised something, I’d have something really good; therefore, if I wanted to write something worth reading, all I had to do was put in the time and effort to revise it enough times. — My Year In Review: 2019So nothing unusual about what I write sometimes looks like shit: I never reread more than one and a half times.
2019-12-12: TIL there’s something like a new TeX compiler available on the market of typesetting: The Tectonic Typesetting System.
2019-12-12: Python VS Common Lisp, workflow and ecosystem. Really nice review, and I was happy to find a reference to one of Steve Losh’s very nice post: A Road to Common Lisp.
As you learn Common Lisp and look for libraries, try to suppress the voice in the back of your head that says “This project was last updated six years ago? That’s probably abandoned and broken.” The stability of Common Lisp means that sometimes libraries can just be done, not abandoned, so don’t dismiss them out of hand.
2019-12-12: Racket and Geiser — still working after all those years! This is mostly like R REPL, but with inline graphics like in iPython using Qt console.
2019-12-13: This new thing, Dash, by the Plotly team looks so nice! First time I see a serious contender to Shiny for visual analytics dashboards.
2019-12-13: Best Practices for ML Engineering (PDF, 24 pp.).
There has been a increasing trend in healthcare and criminal justice to leverage machine learning (ML) for high-stakes prediction applications that deeply impact human lives… The lack of transparency and accountability of predictive models can have (and has already had) severe consequences… — Stop explaining black box machine learning models for high stakes decisions and use interpretable models instead
2019-12-16: Before getting an iPhone 3, I was a happy owner of a Blackberry. This little review brought back a lot of memories from that time.
2019-12-16: A Review of the Python Data Science Dashboarding Landscape in 2019.
2019-12-16: C, what the fuck??!
2019-12-16: Handouts for Bayesian Data Analysis .
2019-12-16: MacOS Filename Homoglyphs Revisited: Didn’t know there was such a thing in Mojave.
2019-12-16: Mathematics of Programming.
2019-12-17: Functional Generative Art Using ClojureScript.
2019-12-17: Hidden Bar lets you hide menu bar items to give your Mac a cleaner look.
2019-12-17: Macros by Example.
Macros let you change your language to suit your problem. This is extremely powerful: You can build up your language so you can express your problem as clearly as possible. This makes your code more concise and simple, which in turn makes your system more malleable.Why Lisp macros are cool, a Perl perspective.> But a bigger advantage is that it makes it possible to write Lisp programs that reliably generate and transform Lisp source code. If you’re not used to Lisp, it’s hard to imagine how tremendously useful this is. People who come from the Perl and C world have a deep suspicion of source code transformation, because it’s invariably unreliable.
A fair look back at Tim Cook’s first decade in charge of Apple. The biggest knock? Taking their eyes off the Mac ball in the middle of the decade — with a Mac Pro that wound up not being very pro and a MacBook Air that stagnated with a non-retina display. — Walt Mossberg on Apple’s Decade
If you want to tell something, just do it. Even if that’s just one thing. Another thing may come to your mind, but it’s no problem when that’s years later. Just start a blog. — A blog is not a commitment
In short, R is a functional programming language masquerading as an imperative language. (…) Nonstandard evaluation is the Wild Wild West of metaprogramming. — The R programming language: The good, the bad, and the ugly
2019-12-18: TIL DuckDuckGo has as HTML Beautifier builtin (via Jamie Tanna).
2019-12-18: That one time I thought I understood recursion (via HN).
2019-12-19: Soon to be on holiday for the rest of the decade! With 160 posts and 1569 micro-posts written since I rebooted this site from scratch.
2019-12-19: TIL about Mailfence, which looks like a great alternative to Fastmail, with similar prices but hosted in Belgium. (via Irreal)
2019-12-19: Two interesting posts on the generation of random mazes: Maze Generation: Eller’s Algorithm, Eller’s Algorithm.
2019-12-19: Color scheme for UI design. (via @phnk)
2019-12-19: Homotopy Type Theory.
2019-12-19: Real World Haskell book.
Every minute of every day, everywhere on the planet, dozens of companies — largely unregulated, little scrutinized — are logging the movements of tens of millions of people with mobile phones and storing the information in gigantic data files. — Twelve Million Phones, One Dataset, Zero Privacy
Humans seem to be wired to believe that we can and should try to improve ourselves and our surroundings, but in a mechanistic world (random or otherwise), it doesn’t actually matter what you do. This question is Absurd because of the conflict between self-improvement—and a desire to do good in the world—being some of the most important reasons that humans have to exist, and the issue that if free will is an illusion then we’re all just taking credit for the universe unfolding as it was going to anyway. — How Absurdism Applies in Everyday Life
2019-12-20: GGplot available for Perl users.
2019-12-20: Apple Platform Security (via Daring Fireball) (PDF).
2019-12-20: Homoiconicity isn’t the point (but
2019-12-20: So long Disqus, hello Webmention. (via Jamie Tanna)
2019-12-20: This Page is Designed to Last, with seven unconventional guidelines in how we handle websites designed to be informative, to make them easy to maintain and preserve.