HN user

bboreham

1,047 karma
Posts10
Comments572
View on HN

I get the following banner:

This website is produced by BBC Global News Ltd, a commercial company that is part of BBC Studios, owned by the BBC (and just the BBC). No money from the licence fee was used to create this website.

The subject does sometimes come up in my casual conversations, since Robin Milner was my first CS lecturer.

He never actually spoke about type inference in my presence. He did teach me CCS (pi-calculus predecessor) a couple of years later, by which time I could appreciate him.

Amazing achievement.

I did some work for Apricot at their Glenrothes factory around 1985-87. In my memory they went heavier on GEM than Windows. I never saw an Apricot running Windows prior to the PC-compatible models.

Mimir in version 3.0 needs Apache Kafka to work.

I’d like to adjust this understanding. Kafka is the big new thing, but it’s optional. The previous way using gRPC still works.

I work on Mimir and other things at Grafana Labs.

Whilst you’re right in broad strokes, I would observe that “the garbage-collector” is one of those tight loops. Single-threaded JavaScript is perhaps one of the best defences against NUMA, but anyone running a process on multiple cores and multiple gigabytes should at least know about the problem.

Very detailed and accurate description. The author clearly knows way more than I do, but I would venture a few notes:

1. In the cloud, it can be difficult to know the NUMA characteristics of your VMs. AWS, Google, etc., do not publish it. I found the ‘lscpu’ command helpful.

2. Tools like https://github.com/SoilRos/cpu-latency plot the core-to-core latency on a 2d grid. There are many example visualisations on that page; maybe you can find the chip you are using.

3. If you get to pick VM sizes, pick ones the same size as a NUMA node on the underlying hardware. Eg prefer 64-core m8g.16xlarge over 96-core m8g.24xlarge which will span two nodes.

Hyrum's Law 12 months ago

Do note your last example makes a biased, or poorly random, selection.

I took a look at the code, to see how I would react as a reviewer.

In the first file I opened, I got as far as here: https://github.com/Sleepful/mymail/blob/main/app/router/page...

  // Create a context variable that inherits from a parent, and sets the value "test".
  // Create a context key for the theme.
  ctx, err := getEmails(pb, e)
First line is very weird, unrelated to the task. Maybe copy-paste from a sample in a blog post? Anyway not paying attention to leave it in.

Wording in the second line is not consistent with third.

I’d stop my review there. Lack of attention to detail. Author does not demonstrate an ability to think clearly.

Agree that mark phase is the expensive bit. Disagree that it’s not worth reducing short-lived allocations. I spend a lot of time analyzing Go program performance, and reducing bytes allocated per second is always beneficial.