Entropic Thoughts
• kqr
Entropic Thoughts
- Webmaster
- kqr
- Generator
- Emacs 30.2 Org-mode 10.0-pre
- Public lists
- davewiner/hackerNewsStars
- Fetched
Entropic Thoughts
• kqr
Kuiper Q-Q plot: are these the same?
When we tried to get an intuition for the differences in distribution functions, we learned that children subjected to a treatment had greater variation in their score than the reference group.
Entropic Thoughts
• kqr
Intuition for distribution differences
Imagine every person in a country is assigned some sort of score, and a higher score is better. I can’t share the specifics around the score I’m investigating right now, but on the population level it is collected by a government agency. Here’s the distribution of these scores for the population in my country.
Entropic Thoughts
• kqr
A full body MRI earns you a year of smoking
Alternative titles:
- … earns you a high-risk pregnancy
- … earns you an ascent of Matterhorn
- … earns you 10,000 km on a motorcycle
- … earns you two BASE jumps
- … earns you a day on the frontline in Ukraine
These are all about equivalent to the risk of one year of smoking.
Entropic Thoughts
• kqr
Data-directed programming in Haskell (SICP 2.4.3)
Entropic Thoughts
• kqr
Tagged data in Haskell (SICP 2.4.2)
Entropic Thoughts
• kqr
GLM 5.2 playing text adventures
I’ve heard some buzz around the new GLM 5.2 open-weights model. They say it’s very capable! I won’t run a full comparison benchmark, but I have some credits sloshing around on OpenRouter so I figured I might compare GLM 5.2 to the similarly-priced Gemini 3 Flash, and see where things land.
This uses the same setup as the previous benchmark: each LLM gets a few attempts at playing the game, with each attempt being limited to a fixed budget of around $0.15. The LLM doesn’t know it, but the harness tracks achievements for each game, and counts how many the LLM earns in each attempt.
Here are the number of attempts for each game in this run.
Entropic Thoughts
• kqr
Lean, not backpressure
Entropic Thoughts
• kqr
LLMs and almost good code
Entropic Thoughts
• kqr
Is the Monaco Grand Prix decided at qualifying?
A Formula One driver triggered my fact-checkitis. They claimed that
Winning the Monaco Grand Prix in Monte Carlo is determined nine out of ten times by which position one starts in.
That makes intuitive sense, because the Monte Carlo track is a narrow street track with few opportunities for overtakes. But … really? Is that an off-the-cuff remark or an accurate statistical prediction of the race?
Entropic Thoughts
• kqr
90 % of the t distribution
William Sealy Gosset was great. He improved beer at Guinness by using the statistics that existed at the time. Not happy with that, he invented new statistics to brew even better beer. The things he invented are used all over the place now, but Guinness wanted to keep him a secret weapon, so they made him publish his results under the fake name Student.
One thing Gosset realised is that it is wrong to compute 90 % confidence intervals for the mean by taking the standard deviation of the sample, and assume a normal distribution, like-a-so:
\[\hat{\mu} \pm 1.645 \hat{\sigma}\]
Entropic Thoughts
• kqr
The stock market returns 4 %
People assume all sorts of wild stock market returns when they make their financial calculations. Here are some numbers that show up on web searches:
| 6 % | 8.4 % | 10 % | 10.1 % | 11.3 % | 11.5 % | 13.6 % | 16 % |
These are all correctly computed under their respective assumptions, but they are very misleading because whatever those assumptions were, they’re not relevant for most calculations. You should assume 4 % in your calculations. Here’s one way to arrive at that:
Entropic Thoughts
• kqr
Pythagorean Addition
TL;DR: Instead of labouriously computing \(c = \sqrt{a^2 + b^2}\), we can mentally calculate using the alpha-max plus beta-min algorithm, by estimating
\[\hat{c} = \mathrm{max}\left(a, 0.9a + 0.5b \right)\]
and this will be very close to the actual \(c\). This is useful for adding up sources of variance, or figuring out radiuses, or other such things.
Entropic Thoughts
• kqr
Regatta Starting Stations – Chi-squared Continued
Entropic Thoughts
• kqr
Article previews in RSS
Since about three years past time immemorial, the RSS feed for this site has been very anaemic. It had article titles and dates, and that was it. Many readers have requested that I include the full article in the feed, or at least a preview, but I’ve always put it off because it has sounded difficult to accomplish technically.
The way the RSS feed for this site is generated is in two steps:
- First a little loop in Emacs Lisp runs through the first few items of a sorted and filtered list of files belonging to this project. This loop constructs an org-element syntax tree for the RSS feed, and renders it out to a temporary file as an Org mode file.
- Then the regular Org exporting framework takes over and exports that file as an RSS file using the ox-rss backend.
Entropic Thoughts
• kqr
Fizz Buzz Through Monoids
Some decade ago I read a good implementation of fizzbuzz. What set it apart was its excellent modularity. The original article is no longer on the web, but this is my reconstruction:
In[1]:module Main where
import Control.Monad (guard)
import Data.Foldable (for_)
import Data.Maybe (fromMaybe)
fizzbuzz i =
fromMaybe (show i) . mconcat $
[ "fizz" <$ guard (rem i 3 == 0)
, "buzz" <$ guard (rem i 5 == 0)
]
main =
for_ [1..100] $
putStrLn . fizzbuzz
The great thing about this implementation is that when we get the natural change in requirements – that we are supposed to print “zork” for multiples of seven – we can accommodate that change by simply adding the line that does so:
Entropic Thoughts
• kqr
Understanding systems
Entropic Thoughts
• kqr
Spaced Repetition: Beginner Guide/FAQ
Spaced repetition is best introduced in the words of Gwern: it is
a mechanical golem that will never forget, and never let us forget whatever we chose to.
If this was a medical treatment or lessons from a personal coach, it would be priced so that only high-ranking politicians, CEOs of big companies, and Silicon Valley programmers could afford it. But spaced repetition is available to anyone, at a cost of only teens of minutes a day. More people ought to use it, but some do not because they harbour misunderstandings about it. Today, we’ll clear some of these up.
Entropic Thoughts
• kqr
Object Oriented Programming in Ada
Ada is incredibly well designed. One way this shows is that it takes the big, monolithic features of other languages and breaks them down into their constituent parts, so we can choose which portions of those features we want. The example I often reach for to explain this is object-oriented programming.
I never truly understood object-oriented programming until I learned Ada, which breaks down object-oriented programming into separate features, like
- encapsulation,
- reuse,
- inheritance,
- abstract interfaces,
- type extension, and
- dynamic dispatch.
Entropic Thoughts
• kqr
Readership maths skills
Many of you get notified of new articles via RSS, and some of you stay tuned through the email newsletter. The email subscribers have, in the past three weeks, answered a survey on their understanding of maths topics. I asked three questions of increasing difficulty:
- How advanced maths have you formally studied?
- How advanced maths are you still comfortable using?
- How advanced maths do you know well enough to teach someone else?
Entropic Thoughts
• kqr
The MVC Mistake
Creating abstractions should not be left to beginners. Richard Gabriel says puts it well::
Abstractions must be carefully and expertly designed, especially when reuse or compression is intended. However, because abstractions are designed in a particular context and for a particular purpose, it is hard to design them while anticipating all purposes and forgetting all purposes, which is the hallmark of the well-designed abstractions.
This is one of my favourite quotes on abstraction, because “anticipating all purposes and forgetting all purposes” so aptly summarises how a good abstraction is made. I was reminded of this when I read the first sentence of issue 34 of Frontend at Scale, where it is phrased as “how to care about anything without caring about everything”.
Entropic Thoughts
• kqr
Lines of code are useful
The internet is full of people dismissing lines of code as a measurement. People say things like
Lines of code written has been firmly established over the decades as a largely meaningless metric.
and
Entropic Thoughts
• kqr
Esqueleto Tutorial
Entropic Thoughts
• kqr
Are LLMs not getting better?
I was reading the METR article on how LLM code passes test much more often than it is of mergeable quality. They look at the performance of LLMs doing programming when the success criterion is “passes all tests” and compare it to when the success criterion is “would get approved by the maintainer”. Unsurprisingly, LLM performance is much worse under the more stringent success criterion. Their 50 % success horizon moves from 50 minutes down to 8 minutes.
As part of this they have included figures such as this one:
Entropic Thoughts
• kqr
Rebasing in Magit
I read Ian Whitlock’s article on why he can’t quit Magit and it inspired me to share more about Magit from my perspective. This article will focus on rebasing.
Here I have opened the git log, by first opening Magit (which I
have bound to the F3 key), and then pressing lL. The first l is the prefix
key for dealing with the git log, and the second L is to to view the log for
all local branches (and the remote branches they track.)
Entropic Thoughts
• kqr
Teaching Children to Bicycle
Teaching an adult to ride a bike is easy. This is how:
- You hand them a smaller bike so they can comfortably reach the ground.
- You instruct them to not focus on going in any particular direction, but instead always steer into the fall.
That’s it. That’s the whole trick to cycling. 99 % of the time, the handlebars are only there to keep the bike under your body. 1 % of the time you use the handlebars to upset the balance to initiate a turn.
Entropic Thoughts
• kqr
Flake Checks in Shell
TL;DR: To use a shell script as a Nix flake check, turn it into a derivation
with runCommand. It must
- Create a file named as suggested in the environment variable
$out. - Print the desired “how to fix” information to
stdout. - Exit with status code 1 if the check failed, otherwise 0.
These three steps are not strictly documented anywhere, but are all needed for a shell script to work as a good flake check.
Entropic Thoughts
• kqr