HNHacker News
TopNewBestAskShowJobs

ScottBurson

10,314 karma · joined August 31, 2010

I can be reached at Scott@ergy.com.
submissionscomments
ScottBurson··on Ranked-choice voting will be used in Maine’s presidential election, court rules
The phrase "one person, one vote" is also the root of much mischief. While we certainly want everyone to have equal influence over the outcome, the fact is, in a race with more than two candidates, you're always voting for some of them and against others. With two candidates, this fact can be glossed over, because you're always voting for one and against the other one; there are no more possibilities. But with more than two, "one person, one vote" suggests that you should only be able to vote for one of them, overlooking the fact that this forces you to vote against all the others. You're still casting N votes about N candidates; they're just subject to the rule that only one of them can be affirmative. In that light, it is clear that the rule is utterly arbitrary.

The correct motto, I submit, is "one person, one candidate, one vote". Approval voting falls directly out of that. Every AV ballot has the same amount of influence over the result as every other, because they're all points on a hypersphere whose center coordinates are all 1/2. That is, they all represent points equally far from the point of indifference.

ScottBurson··on Ranked-choice voting will be used in Maine’s presidential election, court rules
I think it is unfortunate that Instant Runoff Voting (commonly called Ranked-Choice Voting, though it is not the only system for counting ranked ballots) is getting all the buzz these days. Someone posted this link to a very nice explanation, complete with spiffy simulations, then deleted their comment: https://ncase.me/ballot/

Approval Voting is much simpler to implement and use than IRV, and much less prone to produce anomalous results. More discussion can be found here: https://electionscience.org/

I think the Marquis de Condorcet got the entire field off on the wrong foot with a conceptual framework in which voting is about expressing preferences between candidates. Voting theorists have tended ever since to think in terms of preferential voting. The result is an unconscious bias to the effect that a voter's evaluations of the candidates tend to be roughly evenly spaced: that the gap between their first choice and their second is roughly equal to that between their second and third, etc. You can hear that bias, for example, in this statement from FairVote.org:

[A]pproval voting [has the] practical flaw of not allowing voters to support a second choice without potentially causing the defeat of their first choice.

It's true in AV that if you vote for two candidates, your ballot contributes equally to the potential victory of either; you don't get to say which you prefer. But calling this a "flaw" assumes that you couldn't be somewhat indifferent between those two candidates, at least relative to the degree of your dislike for the other(s). That assumption is pervasive, albeit implicit, in the arguments I have seen made against AV, and it is indeed nothing but an assumption.

A much better conceptual framework is to imagine an N-cube, where N is the number of candidates, and each voter's position as a point in that cube. Then the problem of designing a voting system becomes that of identifying which corner the mean of the positions of the voters is closest to. In principle a voting system could allow each voter to supply a real number in [0, 1] for each candidate, and we could simply add them up and see which is largest. In practice it makes more sense to quantize the space to some extent. Score Voting gives the voter a set of possible values, e.g., integers in [0, 10]. Approval Voting boils that down to the bare minimum of {0, 1}. (My opinion is that once the electorate is large enough, there is little benefit to allowing more than two choices; the greater quantization noise of AV gets averaged out.)

Armed with that, we can now look back at the preferential systems. Is there a way to interpret a preferential ballot in the N-cube framework? Yes, there is. We cut the unit N-cube up along diagonal hyperplanes; for instance, in 3 dimensions (i.e. for a 3-candidate race), the X=Y plane, the Y=Z plane, and the X=Z plane. This gives us 6 prismatically shaped regions. We compute the barycenter of each — the center of mass, under the assumption of uniform density — and look at their coordinates. These turn out to be permutations of [1/4, 1/2, 3/4] — a linear sequence. In short, what falls out of this exercise is equivalent, modulo linear transformation, to the Borda Count.

So the Borda Count optimizes for the case in which the voters' positions cluster near the barycenters of those regions: where their evaluation of the middle candidate, in a 3-candidate race, is about halfway between those of the other two. If you listen closely to the arguments presented by preferential-voting advocates, you can hear them assuming that this is likely to be the case. But there's no reason it should be, and in practice I haven't observed that it tends to be.

ScottBurson··on C’s Biggest Mistake (2009)
Yes. As I've long said, C does not have arrays. It has pointers and notations for initializing memory, but it does not have arrays.

There are actually two problems here. One is the absence of bounds checking. The other, which is related but technically orthogonal, is the hole in the type system: an array is not an object. It's been true since Unix v7 that you can pass or return a struct by value, but you can't pass an array by value unless you wrap it in a struct.

The type system also makes no distinction between a pointer to a single object and a pointer into an array of objects. I've worked on static analysis tools that try to find potential buffer overflows, and this turns out to be a surprisingly big problem. One has to do a global dataflow analysis just to discover which pointer variables could ever point at array elements.

ScottBurson··on The coming collision between autonomous vehicles and the liability system (2012) [pdf]
@notahacker was not talking about the original MCAS, but about the patch to it -- the modifications now under development to fix the problems.
ScottBurson··on New academic journal only publishes 'unsurprising' research rejected by others
Oh, I wouldn't do it publicly. The point would be to push back, in private discussions, against the argument that the result was not interesting enough to publish.
ScottBurson··on New academic journal only publishes 'unsurprising' research rejected by others
I guess the lesson is, when an advisor rejects your thesis idea, get them to put their reasons in writing.
ScottBurson··on Shakespeare’s Son Died at 11. A Novel Asks How It Shaped His Art
My summary of the argument from memory was too brief and perhaps not entirely accurate. I encourage you to read the linked article.
ScottBurson··on Shakespeare’s Son Died at 11. A Novel Asks How It Shaped His Art
That William Shakespeare existed is not an open question, but whether he actually wrote the works commonly attributed to him is still debated in some circles. Personally, I find the argument to the contrary quite compelling. Briefly: he owned no books; he was not contemporaneously referred to as a playwright or poet; he had no opportunity to acquire the rich knowledge of the kinds of things that go on in royal courts that is reflected in the plays. Also, many of the plays evince a remarkably feminist sensibility for the times. It seems entirely possible that he was just an actor and producer, and the works commonly attributed to him were the anonymously published work of a woman, either Emilia Bassano or another woman of her acquaintance.

Ref: https://www.theatlantic.com/magazine/archive/2019/06/who-is-...

ScottBurson··on Ultralight lithium-sulfur batteries for electric airplanes
> When was the last time you saw an ICE with both a trunk and a frunk?

Seconds ago -- there's one in my carport :-) (A 1993 Toyota MR2; it's mid-engine. The frunk is small, and completely filled by the spare tire and aftermarket stereo amp.)

ScottBurson··on U.S. backs down in fight with Harvard, MIT over student visas
RCV is an improvement on FPTP -- almost anything would be! -- but Approval Voting is even better. It is easier to implement (the ballot doesn't change at all, just the way it's counted), simpler for voters to understand (you just vote for every candidate you approve of), much less susceptible to strategic voting and not at all to strategic candidate selection, and therefore much less likely to return an anomalous result.

http://www.electionscience.org

ScottBurson··on California imposing sweeping rollback of reopening plans amid case surges
I'm well aware of that -- except that an exponential is a straight line on a semi-log chart. But to people hearing the numbers, who aren't familiar with the phenomenon of exponential growth, a linear scale, despite being somewhat arbitrary, better captures the psychological impact. Consider an idealized example: we start with one case, and a doubling time of three days. It takes the whole first month to get to about 1000 cases. Even though you and I know that that's an extremely aggressive growth rate, 1000 cases still doesn't sound like a lot to many people, when they compare it to the population of the US (or annual numbers of deaths from various other causes, like swimming pool accidents -- a comparison I've actually heard made). In the next month, though, it would get to 1M cases, which is a much larger fraction of the population and is correspondingly likelier to get people's attention.
ScottBurson··on California imposing sweeping rollback of reopening plans amid case surges
It's easy to be misled by the nature of exponential growth. In most people's vocabularies these days, the term seems to mean just "very fast", but correctly understood, it's more specific and more complex than that.

Exponential growth, in this context, means that the rate of new infections is proportional to the number of existing infections. This cuts both ways: when the number of existing infections is large, the rate of growth is also large -- which is why exponential growth is so dangerous -- but when the existing number is small, the growth rate is also small. If you look at a graph of an exponential curve, there's a long relatively flat region to the left, before the knee in the curve is hit and the thing takes off.

The point is, even though we here in CA started the lockdown relatively early, we've never gotten the case numbers down to a manageable level. I'm not sure why not. Although a lot of us have taken the virus seriously from the beginning, maybe there are still too many who don't. The sad truth is that a lot of people won't believe it until it affects someone they know -- and while it's well under control, that tends not to happen. So it looks like a bad outbreak in a region creates "mental herd immunity", where almost everyone cooperates with the lockdown; places that haven't had such an outbreak don't take it as seriously.

ScottBurson··on U.S. Supreme Court deems half of Oklahoma a Native American reservation
The only way we'll get a viable third party is to change our voting system. Allowing a voter to vote for only one of several candidates locks us into a two-party system, because it requires the voter to vote against all but one candidate.

Approval Voting simply allows the voter to vote for or against each candidate independently. (The instruction is to "vote for all candidates you approve of" -- hence the name.) "One person, one vote" becomes "one person, one candidate, one vote".

Instant-Runoff Voting (aka Ranked-Choice Voting, though there are other ranked-choice systems) is getting more buzz these days than Approval Voting, but AV is superior: much simpler to implement, easier to understand, and much less likely to return an anomalous result.

For more info: https://www.electionscience.org/

ScottBurson··on Learn to Create and Flex Flexagons
I still have a 24-faced hexaflexagon I made in 1975, using onionskin paper and an HP plotter. (Thinness and accuracy are critical for high-order flexagons.)
ScottBurson··on The tricky math of Covid-19 herd immunity
Very interesting analysis!

I've also read that in the 1918 Spanish Flu pandemic, the cities with the most stringent lockdowns were the ones whose economies recovered the fastest -- so your model has some empirical support.

ScottBurson··on The tricky math of Covid-19 herd immunity
> But what I am saying is that maybe the "reasoning" regarding what will happen without them isn't as much established fact as many people like to believe.

I don't think anyone thought of it as established fact. But it also wasn't an established fact that we didn't have to take all those measures. It's a question of risk, not of absolute foreknowledge.

Also, as @acqq correctly points out, a period of time with strict lockdown can reduce the number of cases to the point that a relaxation of controls doesn't immediately result in a large outbreak. An exponential curve has a flat region [0] where it doesn't seem to be getting out of hand. If you manage to put yourselves well into that flat region, you will have bought yourself a period of time in which the controls can be relaxed. But it's only temporary.

[0] https://en.m.wikipedia.org/wiki/Exponential_growth

ScottBurson··on Ask HN: After Slate Star Codex, where are the nuanced discussions?
I've always thought Slashdot's old moderation system was pretty well designed. It's been years since I've been there, but as I recall, there were several categories of upvote -- Interesting, Informative, and Funny come to mind. There was a meta-moderation system to calibrate the moderators. The site was better than HN at showing only upvoted comments by default, in case you just wanted to see the highlights. (Oh, and I think it would send email for belated replies, making it better for ongoing discussion -- something I've definitely missed here at HN.)

Although the site is pretty dead now -- it doesn't have HN's advantage of a wealthy benefactor keeping it ad-free -- its original incarnation had some good ideas.

ScottBurson··on California sets Covid-19 daily record, Bay Area cumulative total passes 20k
The operative point is not how many have died — it's how many could die. If we gave up altogether on mask-wearing and social distancing, the numbers would get to be much larger. This is partly because the ratio of deaths to infections would increase as the hospitals were overwhelmed. The relentless march of exponential growth would see to that.

The fact that the numbers don't seem that dramatic yet doesn't mean that measures to slow the progress of the virus aren't important.

ScottBurson··on I Am Deleting the Blog
> This usage predates mobile phones

Indeed -- it dates back to the 1920s. At that time, phone numbers in the US started to be formed from a 2-letter exchange code followed by 5 (or sometimes 4) digits. For instance, "PEnnsylvania 6-5000" (dialled 736-5000) was the number of the Hotel Pennsylvania in New York City, and also the title of a 1940 hit song.

Source: https://en.m.wikipedia.org/wiki/Telephone_number

ScottBurson··on The Art of Prolog (1994)
I think of Prolog programs as collections of constraints.

Now, a lot of people, when they hear the term "constraints", think of arithmetic inequalities. And indeed, there are "Constraint Logic Programming" extensions to Prolog that support such constraints. But that's not what I'm referring to. Even in the absence of such extensions, Prolog is a constraint language, but the constraints are structural rather than numerical.

Let's take a simple example, the Prolog code that defines list appending:

  append([], X, X).
  append([X|Y], Z, [X|W]) :- append(Y, Z, W).
This says, first, that 'append' is satisfied if its first argument is empty and the second and third are equal; and secondly, that it's also satisfied if the first and third argument have the same head, and 'append' is satisfied recursively on the tail of the first argument, the second argument, and the tail of the third.

Prolog allows any of those arguments to be inputs, and any to be outputs. The way this works is that variables in structures function as named holes to be filled in. So while you can use 'append' as a function to append two lists, like this:

  ? append([3], [7], X).
  X = [3, 7]
you can also use it as a predicate:

  ? append([3], [7], [4]).
  no
Here "no" means Prolog couldn't find any way to satisfy the constraint. Or, you can use it "backwards":

  ? append(X, [7], [4, 7]).
  X = 4
Prolog doesn't even know what's normally an "input" and what's an "output"; it just searches for a solution to the constraints. It can even construct multiple solutions:

  ? append(X, Y, [4, 7]).
  X = [], Y = [4, 7];
  X = [4], Y = [7];
  X = [4, 7], Y = []
Here's the really powerful part. These solutions are produced one at a time. Some larger goal can be consuming them, such that if it fails, Prolog will try the next one automatically. Thus it's very easy to put together a large, complex constraint and have Prolog search for a solution.

The catch, as others have mentioned, is that it does that using a rather naive depth-first search. Even though, at the lowest level, it tries each alternative very quickly, there can easily be a combinatorial explosion of alternatives. To use the language effectively requires the programmer to learn strategies to avoid these explosions. So while in small examples the language seems very declarative, and indeed a lot of code can be written without too much attention to its procedural behavior, eventually this breaks down and you have to think about it procedurally as well.

ScottBurson··on Researchers and Founders
Yes, this is what I was hoping the post would be about.
ScottBurson··on Ask HN: Can't focus when writing code in dark mode
I've always preferred light-on-dark. I have my Emacs background set to #000060, with primary foreground #88FF88. Very soothing.
ScottBurson··on Scandalous weird old things about the C preprocessor (2015)
While I love to hate on the preprocessor -- and did so publicly once in The Unix Hater's Handbook (p. 211) -- item 4 is silly. The whole point of many macros is to circumvent referential transparency! This is true even in a language with real macros, like Lisp. ("Real macros" operate on a syntax tree representation, not on character strings.)
ScottBurson··on An engineered PET depolymerase to break down and recycle plastic bottles
But it isn't for plain polyethylene (HDPE or LDPE). It's specifically for PET. I suggest "PET plastic bottles" in place of just "plastic".
ScottBurson··on An engineered PET depolymerase to break down and recycle plastic bottles
Was it 3-D printed?

I was going to say that it probably isn't PET, but a bit of Googling quickly turns up articles about people making houses out of recycled plastic. If that's what it is, it could well be PET.

ScottBurson··on In 4 US state prisons, 3,300 inmates test positive, 96% without symptoms
Yeah, I saw it too. The hypothesis, as I recall, is that the more virions inhaled, the more likely some of them will get deep in the lungs where they can do the most damage.
ScottBurson··on Swiss Cat Ladders: Documenting and Deconstructing Feline-Friendly Infrastructure
"Once an outdoor cat, always an outdoor cat." That is true in many cases, but there are exceptions. One of my cats is a rescued feral -- he spent the first six months of his life outside, but has been an indoor cat (as all of mine are) ever since, some 13 years on, and has never shown any sign of wanting to go outside.
ScottBurson··on California’s Roadmap to Modify the Stay-at-Home Order [pdf]
And "bell" in "bell curve" shouldn't be capitalized -- it's not someone's name, it's just that the curve has (somewhat) the shape of a bell.
ScottBurson··on California’s Roadmap to Modify the Stay-at-Home Order [pdf]
> Around 200 million Americans will eventually get it, barring extraordinary events (like a vaccine arriving in 6 months). We cannot change this.

This doesn't seem right to me. With social distancing now, and testing and tracing once we have enough tests available, it seems to me that we should be able to keep the total number of infected people well below 200M, even if a vaccine takes the expected 18-24 months. If there's a solid argument that this is not the case, I'd like to hear it.

ScottBurson··on Erase your darlings: immutable infrastructure for mutable systems
Horror story: https://thedailywtf.com/articles/Designed-For-Reliability
← PreviousPage 4 of 34Next →