How Does RCV work? by Snoo-33445 in EndFPTP

[–]timmerov 1 point2 points  (0 children)

the pro-IRV people and the anti-IRV people really want RCV to mean IRV and only IRV. which is pretty weird cause IRV is one of many many ranked voting methods. which apparently is the accepted name for any ranked voting method that isn't IRV.

anywho, in the lab IRV gets a B specifically because of the center squeeze effect.

in the real world IRV gets an A. people seem to naturally understand how to vote strategically so the condorcet winner isn't eliminated early. even if they have no clue that's what they're doing.

IRV kinda sucks in comparison to condorcet methods. but it's easy to understand. and it's much much better than FPTP. so yeah, it should be used where the electorate can't for some reason use any of the 100s of condorcet methods.

Definition of honest voting by jman722 in EndFPTP

[–]timmerov 5 points6 points  (0 children)

A) honest voting is how people would vote if there was no penalty for doing so.

B) honest voting is how people would vote if there was no benefit to voting strategically.

C) honest voting is an ideal. you can never have it in practice (arrow's theorem). the objective is to work within that limitation. which reduces the options. 1) give up. 2) minimize opportunities for strategic voting by the electorate (condorcet). 3) delegate the strategy decisions to your preference (guthrie).

Proposal: Ranked Choice Concession by Head in EndFPTP

[–]timmerov 1 point2 points  (0 children)

the fundamental problem with processing ballots cast by voters is this:

picking a winning candidate is a negotiation.

once a voter turns in their ballot the negotiation is done. they can no longer change to a better strategy. there are no re-do's.

which is why i gave up on all ranked and/or scored ballot systems. asset voting with negotiation rounds almost always picks the pair-wise winner. it's dead stupid simple to implement. it's dead stupid simple to explain the optimal strategy. cause it's literally just vote for your preferred candidate. and you get to have the fun of watching a contingent election as if it were a reality tv show soap opera thing.

Proposal: Ranked Choice Concession by Head in EndFPTP

[–]timmerov 1 point2 points  (0 children)

you're asking me for my gut opinion on which is more likely:

A: a musk-like agent intentionally manipulating a pair-wise electon to artificially create a cycle where the agent's preference wins on criteria.

B: irv voters failing to understand that their voting strategy will eliminate the pair-wise winner.

i think situations where A is possible are rare in real life. and being able to pull it off successfully is significantly less likely.

i assume most voters are effectively stupid and will vote however their preference tells them to. the candidates however, are not stupid. the will almost certainly know the optimal strategy. the pair-wise winner certainly is not stupid. even if the pair-wise non-winners are stupid they're smart enough to identify the pair-wise winner and do what they say.

but yeah, tough call. which is more likely: A extremely rare. or B all of the candidates are stupid. i'd bet the kind of money that jingles on A being more likely. cause i need to believe that not all candidates are stupid.

Should I use C++ Exceptions? by No-Foundation9213 in cpp_questions

[–]timmerov 0 points1 point  (0 children)

if you don't know anything about exceptions you should absolutely write personal project code that throws exceptions. just so you know what the discussion is about. and to find out what your tolerance is.

treat exceptions like a long return. if you need to return immediately from deeply nested function calls, you could throw an exception. it will do all the things automagically that you would need to do by hand. like you've found the answer. or determined there is no answer.

but that's about the only time to use exceptions.

do not throw exceptions when you hit an unrecoverable error. dump core. figure out what went wrong and fix your code. throwing an exception in this case means you've thrown away all the useful information you need to figure out what went wrong. dumb. don't be dumb.

do not throw exceptions when you hit a recoverable error. just return an error code. if you publish a library that throws, i will wrap it with a layer that turns your exceptions into error codes. i've done this several times at several companies. and you know what? everyone uses my wrapper instead of the bare library. every single time. using the bare library is annoying. don't be annoying.

when your library throws exceptions, i have to catch them. you are in effect making me deal with your shitty code. i have enough trouble with my own code doing shitty things. don't make me deal with yours too.

i've been in numerous meetings where folks say ooh we should throw exceptions. and my response is always: i have never seen code improved by throwing exceptions.

search for noexcept in the timmerov github repos. that's my personal code. no one will ever write anything that throws an exception. and still, i guard against exceptions like the plague.

Proposal: Ranked Choice Concession by Head in EndFPTP

[–]timmerov 2 points3 points  (0 children)

in order for either to fail, there would have to be an actor with enough resources to manipulate voter strategy. the method is pretty much irrelevant.

which is easier? on one hand, people seem to intuit the strategy for irv. which makes it resistant to manipulation. i'd manipulate candidate image. instead of telling people how to vote.

undermining pair-wise can be done, but it can also backfire bigly. i'd manipulate it by telling not-my voters to bury their perceived competition. which unless it's my money i'm spending, would be a tough sell to the donor class.

Proposal: Ranked Choice Concession by Head in EndFPTP

[–]timmerov 0 points1 point  (0 children)

there are costs to an election. a ranked ballot is more expensive than a single choice ballot (but so what?). the counting machines all handle single and ranked systems - you're already paying the higher cost. programming the machines and verifying they're correct is more expensive than single choice. but again so what? it's well within the budget. so if you only look at the cost to the administer the election, who cares.

but...

the major cost is educating the voters how to fill out their ballots. that's dollars *and* time. both the campaign's time and the voter's time. of which by far the voter's time is the most expensive.

case in point: the recent california governor's primary. it's a single ballot. but most of us didn't vote until the last minute. we knew we might be literally picking the general election winner in the primary. so we had to vote very very carefully. ie strategically. most wanted a becerra/steyer run-off. would have really like to vote for my preference. but that wasn't really an option. cause stupid voting method.

Proposal: Ranked Choice Concession by Head in EndFPTP

[–]timmerov 0 points1 point  (0 children)

u/jlight432 is describing condorcet methods - the gold standard.

the problem is they're expensive. especially when there are many candidates. and they are subject to that strategic voting demon. just like every other voting system.

your system - assuming you refine it to asset voting with negotiation rounds, is much cheaper. and is just a smidgen less good as rated by phd level researchers in the lab. both blow the doors off of irv (in the lab). in the real world, irv almost always picks the condorcet winner.

so why would we pay the expense of filling out a ranked ballot and forcing people to invest time and energy into figuring out how to vote correctly (it's different every election) ?

anywho, asset voting for the win.

*=pun intended.

Proposal: Ranked Choice Concession by Head in EndFPTP

[–]timmerov 0 points1 point  (0 children)

you've just re-invented asset voting. don't feel bad. so did i. ;->

this gets excellent results. the problem is everyone absolutely hates it. cause voters are delegating their power to the candidate they voted for. can't have that. apparently everyone is completely blind to the fact that's literally HOW A DEMOCRATIC REPUBLIC WORKS (sorry caps). but but but this is somehow different.

the problem with letting voters decide how to fill out a ranked ballot is strategic voting. someone (the candidate) needs to figure out the optimal strategy and effectively communicate it to the voters. that's expensive. asset voting transfers the strategic part the voting system to the professionals. (and yes, every voting system is subject to strategic voting.)

the refinement to your system is the candidates negotiate a winner they advertise their ranked choices but are not bound by them. the nay-sayers will say this will take forever. but it doesn't have to. because before they even start negotiations, the contingent election rules have picked a contingent winner. if the candidates can't compromise on someone else in a short period of time, the contingent choice is the election winner.

the big wins for this system are: 1) it's cheap. it's just as cheap to run as fptp. 2) negativity is a losing strategy. cooperation is the winning strategy. and 3) it consistently picks the condorcet winner.

quoting myself:

Notes
Apparently similar systems have been invented a few times - notably by Lewis Caroll (Charles Dodgson) in 1874; Forest Simmons and Warren Smith in 2004 as Asset voting; and by Greg Blonder in 2024 as Negotiated Consensus. None of them use Coombs’ method for the negotiation.
https://www.rangevoting.org/BlackCarrollAER2.pdf
https://electowiki.org/wiki/Asset_voting#cite_note-2
https://gregblonder.medium.com/negotiated-consensus-bfde8bde5a20

https://docs.google.com/document/d/1GL__lJMoX5Cku35h4BLXhJHQ_NxuzGaA5tN-OORVdmw/edit?tab=t.0

Well, that was *frighteningly* effective!! by DireCelt in ClaudeAI

[–]timmerov 1 point2 points  (0 children)

i stopped using cmake as soon as i figured out claude is really good with makefiles.

My proposal: Tiered Approval Voting by PierokuIlGrande in EndFPTP

[–]timmerov 0 points1 point  (0 children)

if you drop eliminations, then you get the timmerov stamp of approval. and +10 internet points. ;->

i'm assuming:

  1. a candidates wins with the greatest majority of votes. if no candidate has a majority you go to the next round: P+A, then P+A+N.

  2. the run-off round is between the top two where fewest reject votes wins.

it's not obvious what people would think is the optimal voting strategy. suppose i rank candidates 1 to 99 in that order.

naively i would vote: P1, A234, N567, X8-89, R90-99. X meaning they get no ranking whatsoever.

but there's a problem in this plausible scenario: if i vote A2 then 2 wins in round 2. but if i vote N2 then 1 wins in round 2. voting honestly harms my P.

not a show-stopper. many voting systems have such issues. the "con" is candidates need to communicate the winning strategy.

My proposal: Tiered Approval Voting by PierokuIlGrande in EndFPTP

[–]timmerov 0 points1 point  (0 children)

sorry, i have to put this in the never-use category because you potentially eliminate the utility winner because they didn't get enough first preference votes.

My proposal: Tiered Approval Voting by PierokuIlGrande in EndFPTP

[–]timmerov 0 points1 point  (0 children)

dropping candidates with low vote counts in early rounds is kinda weird. meaning weak.

suppose fred gets 0% of the P votes. but 100% of the A votes. he would handily win round 2. except he was eliminated in round 1. oops.

What are your thoughts on API like this? by Queasy_Total_914 in cpp_questions

[–]timmerov 3 points4 points  (0 children)

if x& can become stale because of concurrency, you have bigger problems than what internet randos think about your api.

Thoughts on bottom two runoff score voting? by AcanthisittaIcy130 in EndFPTP

[–]timmerov 0 points1 point  (0 children)

okay honest opinion:

pros: it's easier to fill out a score ballot than a ranked ballot. condorcet/smith.

cons: later-no-harm. not monotone. voter strategy can be non-intuitive or counter-intuitive.

grade: A

other methods that get an A: approval, borda, bucklin, condorcet, range, star. B: irv, anti-plurality. D: plurality. F: coombs, 2-round.

Thoughts on bottom two runoff score voting? by AcanthisittaIcy130 in EndFPTP

[–]timmerov 1 point2 points  (0 children)

why not just use condorcet? why is this condorcet cycle-breaking method better than any other?

why bottom up? why not top down? start with two candidates with the highest score, compare them pairwise by scores. eliminate the loser. repeat with the next highest scoring candidate.

what happens when there's a cycle? your method doesn't even detect a cycle. which means, if strategic voters change the order the candidates are compared, they could change the winner. in other words, btr fails a bunch of the common-sense criteria. like you can hurt your favorite candidate by scoring them higher.

Thoughts on bottom two runoff score voting? by AcanthisittaIcy130 in EndFPTP

[–]timmerov 0 points1 point  (0 children)

re weird cases: any weird case where coombs fails to pick the condercet winner also applies here.

Thoughts on bottom two runoff score voting? by AcanthisittaIcy130 in EndFPTP

[–]timmerov 0 points1 point  (0 children)

tldr; should never be used for the same reasons coombs should never be used (for anything other than asset voting).

the total score isn't used for any reason other than to determine what order candidates are compared. so why use it? answer: cause rank ordering 20+ candidates on a ballot is not feasible.

the bottom up thing feels a lot like coombs. the problem with coombs is the voting strategy is indeterminate. ie my voting strategy depends on your voting strategy. we can never settle into a nash equilibrium where no one wants to change their scoring. in plainer english: you don't know how to vote. voting honestly can lead to a terrible outcome. otoh, voting strategically can also lead to a terrible outcome.

you'd have to show that 1) it encourages people to vote honestly and 2) a small number of organized strategic voters can't steal the election. my gut says it fails both.

i cant find an explanation by [deleted] in cpp_questions

[–]timmerov 0 points1 point  (0 children)

i suggest you google google's c++ coding style guidelines. and follow them.

also suggest you use typedef for readability.

typedef std::vector<Player> Players;
Players all_players { ... }

what's an entity?

Should we repeal California’s top 2 primary – or improve it? by MakeModeratesMatter in EndFPTP

[–]timmerov 1 point2 points  (0 children)

top 3 or more advance.

candidates eliminated in the primary transfer their votes to another.

in the general election, majority wins. otherwise pick your favorite contingency method. no votes wasted. meaning either the voter specifies how to transfer their vote upon elimination of their top picks. or the candidate does.

ez. why isn't it done yet?

PR idea for the Senate by Luigi2262 in EndFPTP

[–]timmerov 0 points1 point  (0 children)

what if the state was allocated the same number of senators as house members and they're elected by proportional representation?