Inane Observations $ sudo fix_it
  • Simulating plausible ballot paper preferences from STV count sheets

    02 February 2023 (updated 21 February 2023) | single transferable vote opentally | Comment

    Introduction

    When analysing single transferable vote (STV) elections, we often desire a record of the preferences lodged by voters, so that voting patterns can be analysed in detail, or to see how changes in voters' preferences or in the rules of the count might impact… »

  • OpenTally dev log: Battery of optimisations leads to 108% performance improvement

    25 August 2022 | single transferable vote opentally | Comment

    Using rational arithmetic, OpenTally e825ca1 processes the 3,821,539-vote 2022 Australian Senate election for Victoria in a mean 11.34 (95% CI ± 0.03) seconds on my Intel i5-7500. This week I put some time into cutting this figure down.

    Using perf and Hotspot, we obtain… »

  • Later-no-harm and the ‘Wright’ method of single transferable vote

    16 July 2022 | single transferable vote opentally | Comment

    Later-no-harm is a criterion for preferential voting methods which provides that ‘Adding a later preference to a ballot should not harm any candidate already listed’ [1]. The most well-known voting systems which comply with later-no-harm are the single transferable vote (STV), and its single-winner… »

  • Curiosities in drafting for the weighted inclusive Gregory method of STV

    15 July 2022 | single transferable vote opentally law | Comment

    In Australia, 2 jurisdictions make use of the weighted inclusive Gregory method of the single transferable vote (STV). The weighted inclusive Gregory method of STV is one of 2 systems recommended by the Proportional Representation Society of Australia as part of a gold standard electoral… »

  • The failure of unweighted inclusive Gregory STV

    17 June 2022 | single transferable vote opentally | Comment

    The single transferable vote (STV) is a family of voting systems designed to achieve proportional representation. It is widely used in Australia in multi-winner elections, in both governments and private contexts.

    Most STV systems in use in Australia fall into one of two categories: exclusive… »

  • A conceptual primer on the single transferable vote – 6: Meek method

    16 June 2022 (updated 18 June 2022) | single transferable vote opentally | Comment

    In part 5, we presented the weighted inclusive Gregory method. In that part and all previous parts, during the distribution of preferences we have ‘skipped over’ any candidates who have already been elected, as we said that to give extra votes to any of… »

  • A conceptual primer on the single transferable vote – 5: Weighted inclusive Gregory method

    16 June 2022 (updated 18 June 2022) | single transferable vote opentally | Comment

    In part 4, we presented the Gregory method, which removes random effects from STV. In that part, we continued with a decision made in part 3 to restrict the ballot papers which can contribute to a surplus distribution, yielding the exclusive Gregory method.

    To… »

  • A conceptual primer on the single transferable vote – 4: Exclusive Gregory method

    01 June 2022 (updated 15 July 2022) | single transferable vote opentally | Comment

    In part 3, we discussed a refinement to random transfer STV, noting that even in refined form it is still subject to random effects. In this part, we introduce a method which eliminates randomness from STV completely.

    For the sake of illustration, let's again… »

  • A conceptual primer on the single transferable vote – 3: Refining random transfer STV

    01 June 2022 (updated 15 July 2022) | single transferable vote opentally | Comment

    In part 2, we described the original 1873 implementation of STV by Thomas Hare, noting that the method then proposed was highly influenced by the effect of random chance. In this part, we will introduce some strategies to reduce this effect somewhat.

    For the… »

  • A conceptual primer on the single transferable vote – 2: Andrae's and Hare's methods

    30 May 2022 (updated 15 July 2022) | single transferable vote opentally | Comment

    At the end of part 1, we provided an outline of STV:

    a voting system which mimics the effect of repeated SNTV, where each voter has only 1 vote at a time, but where the voting system automatically redirects wasted votes from candidates elected

    … »
  • A conceptual primer on the single transferable vote – 1: Building a fair voting system

    28 May 2022 (updated 15 July 2022) | single transferable vote opentally | Comment

    The single transferable vote (STV) is a family of multiple-winner voting systems which provide proportional representation by allowing voters to rank candidates in order of preference.

    This series provides a primer on the principles of STV, from its conceptual foundations through to contemporary developments in… »

  • Parcels? Subparcels? Not just for STV hand counts! – OpenTally dev log

    21 August 2021 | single transferable vote opentally | Comment

    Single transferable vote rules designed for hand-counting often contain references to ‘parcels’ (or ‘bundles’ or ‘batches’), ‘further parcels’ and sometimes even ‘subparcels’.

    For example, consider the 4th stage of the ERS97 model election. 107 of Glazier's and Wright's ballot papers are aggregated according to… »

  • Implementing a BLT parser by hand in Rust (vs pest and combine): OpenTally dev log

    30 July 2021 | single transferable vote rust webassembly opentally | Comment

    OpenTally is open-source software which can count single transferable vote elections specified using the BLT file format.

    Earlier this month, I replaced OpenTally's previous naive string-manipulation-based BLT parser with one using pest. A new parser was necessary to support extensions to the BLT… »

  • Model rules for a computerised STV election using the weighted inclusive Gregory method

    24 July 2021 (updated 26 March 2022) | elections voting systems proportional representation single transferable vote opentally | Comment

    OpenTally is open-source software for counting single transferable vote (STV) elections. The default preset in OpenTally is ‘OpenTally WIGM’, a recommended set of simple STV rules designed for computer counting, using the weighted inclusive Gregory method, exact quotas and rational arithmetic.

    The weighted inclusive Gregory… »

  • Compiling I D Hill's New Zealand Meek STV implementation: OpenTally dev log

    08 July 2021 (updated 22 July 2022) | elections voting systems proportional representation single transferable vote opentally | Comment

    In [1], I D Hill describes an implementation of Meek STV written in Pascal, which had been privately circulated since as early as 1999 [2]. The implementation is similar to the earlier ‘Algorithm 123’ Pascal implementation of Meek STV by Hill, Wichmann and… »

  • Multiple constraints in STV elections: OpenTally dev log

    01 July 2021 (updated 18 June 2022) | elections voting systems proportional representation single transferable vote opentally | Comment

    OpenTally is open source software currently under development for the counting of elections using STV and related systems. Part of its feature set is the implementation of constraints on elections: for example, where a certain minimum or maximum number of candidates must be elected from… »

  • Porting Python to Rust/WebAssembly: OpenTally dev log

    05 June 2021 (updated 16 July 2021) | elections voting systems proportional representation single transferable vote rust webassembly opentally | Comment

    Background and motivation

    pyRCV2 is software for open-source election counting. It is intended to be usable across multiple platforms – as a web application, for the convenience of users less technologically inclined, and as a standalone CLI desktop application, for better performance. To this end,… »

  • pyRCV2: Open-source online counting for STV and other preferential voting systems

    24 December 2020 (updated 25 May 2021) | elections voting systems proportional representation single transferable vote | Comment

    Screenshot

    pyRCV2 is an application for counting various preferential voting elections.

    pyRCV2 may be used in a number of different ways:

    • as an online web application, no installation or special software required, at https://yingtongli.me/rcv/
    • as a standalone Python command line application
    • as a library within another
    … »
  • Home
  • Git (Archives: GitLab, GitHub)
  • Research
  • Quick Links
  • Posts
    • February 2023 (1)
    • December 2022 (4)
    • October 2022 (4)
    • September 2022 (5)
    • August 2022 (2)
    • More…
  • Tags
    • linux (30)
    • misc (21)
    • opentally (20)
    • copyright (19)
    • medicine (19)
    • single transferable vote (19)
    • drm (18)
    • monash (11)
    • encryption (10)
    • mathematics (9)
    • proportional representation (8)
    • statistics (8)
    • law (7)
    • meeting procedure (7)
    • victoria (7)
    • defective by design (6)
    • digital rights management (6)
    • ptv (6)
    • public transport (6)
    • creative commons (4)
    • ledger (4)
    • plain-text accounting (4)
    • rust (4)
    • webassembly (4)
    • politics (3)
    • python (3)
    • asexuality (2)
    • gsrm (2)
    • tax (2)
    • victorian electoral commission (2)
    • android (2)
    • security (15)
    • cryptography (10)
    • programming (8)
    • bookkeeping (4)
    • television (2)
    • review (8)
    • med in review (11)
    • obfuscation (9)
    • music (9)
    • parliamentary procedure (7)
    • video editing (3)
    • reverse engineering (16)
    • voting systems (8)
    • elections (12)
    • ebook (16)
    • guide (33)
  • Pages
    • Financial statements
    • Musical arrangements
    • Random draws
  • Lee Yingtong Li
  • blog@yingtongli.me
  • My CV · CV of Failures
@RunasSudo

Most material on this website is available under an open licence. See https://yingtongli.me/blog/copyright.html for details.