Inane Observations $ sudo fix_it
  • DrCr, a double-entry bookkeeping tool

    09 June 2025 | accounting bookkeeping ledger rust programming drcr | Comment

    I present DrCr, a self-contained cross-platform open-source double-entry bookkeeping tool, written using Rust and Tauri, with Vue.js on the frontend, and Luau for scriptable plugin support.

    DrCr provides an easily navigated GUI which facilitates exploring financial information. Unlike more minimalist ledger-likes, DrCr embraces… »

  • Moving beyond plaintext accounting – why I wrote my own double-entry bookkeeping tool

    09 June 2025 (updated 10 June 2025) | accounting bookkeeping ledger rust programming drcr | Comment

    Since 2017, I have been using open-source double-entry bookkeeping tools to manage personal finances – initially GnuCash, and from 2019, the plaintext accounting tool ledger. Ledger, and plaintext accounting generally, sported a number of appealing features – the software is lightweight and performant,… »

  • A dynamic, extensible approach to implementing double-entry bookkeeping

    07 June 2025 (updated 09 June 2025) | accounting bookkeeping ledger rust programming drcr | Comment

    Motivation

    Double-entry bookkeeping is the foundation of modern accounting. I have recently been developing DrCr, open-source software for double-entry bookkeeping, which has proved fruitful – a further article about the software will be forthcoming. In simple terms, generating accounting reports from double-entry transaction data… »

  • Efficiently reading a CSV of floats in Rust

    12 November 2023 | rust programming | Comment

    In hpstat, we are often required to read large CSV files consisting of a header of string column names, followed by data consisting entirely of floating-point numbers. Profiling reveals that a naïve approach based on generic CSV parsers is inefficient at this task.

    Consider… »

  • A high-performance Rust implementation of the Turnbull non-parametric maximum likelihood estimator for interval-censored survival data

    29 October 2023 (updated 02 May 2024) | mathematics statistics rust | Comment

    A common need in biostatistics is to estimate survival curves, but particular difficulty arises when observations are interval censored, i.e. the time of event is not observed exactly, but is known only to fall within a particular interval. In this setting, the Turnbull estimator [1]… »

  • A high-performance Rust implementation of interval-censored Cox regression

    29 April 2023 (updated 01 May 2023) | mathematics statistics rust | Comment

    Cox proportional hazards models are commonly used in biostatistics for the modelling of time-to-event data, such as mortality or disease progression. A difficulty in applying Cox models arises when observations are interval censored, i.e. the time of event is not observed exactly, but is known… »

  • 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… »

  • Asyncify with vanilla JS/WebAssembly (wasm-bindgen compatible)

    28 July 2021 (updated 29 July 2021) | rust webassembly opentally | Comment

    Background

    WebAssembly is a technology for executing compiled programs in the web browser at near-native speeds. However, it has a number of current limitations, including that it does not support coroutines/asynchronicity.

    In OpenTally, WebAssembly is used to run code for counting an election. This… »

  • Reducing binary size with DIY dynamic dispatch: OpenTally dev log

    16 July 2021 | rust webassembly opentally | Comment

    Background

    OpenTally is open source software for the counting of preferential voting elections. One feature of OpenTally is support for various different representations of numbers, from floating-point arithmetic through to exact rational representations.

    In OpenTally, these are implemented using generics. For example, consider the following… »

  • 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,… »

  • Home
  • Git (Archives: GitLab, GitHub)
  • Research
  • Music
  • Posts
    • June 2025 (3)
    • May 2025 (3)
    • December 2024 (2)
    • November 2024 (2)
    • September 2024 (2)
    • More…
  • Tags
    • medicine (25)
    • copyright (20)
    • opentally (20)
    • drm (19)
    • encryption (12)
    • monash (12)
    • mathematics (11)
    • rust (10)
    • statistics (10)
    • proportional representation (8)
    • python (8)
    • victoria (8)
    • law (7)
    • ledger (7)
    • meeting procedure (7)
    • ptv (7)
    • public transport (7)
    • defective by design (6)
    • digital rights management (6)
    • creative commons (4)
    • webassembly (4)
    • accounting (3)
    • drcr (3)
    • metro trains (3)
    • paediatrics (3)
    • politics (3)
    • 2fa (2)
    • c (2)
    • graphics (2)
    • mfa (2)
    • pdf (2)
    • victorian electoral commission (2)
    • android (5)
    • security (18)
    • programming (15)
    • cryptography (12)
    • bookkeeping (7)
    • voting systems (8)
    • med in review (11)
    • music (10)
    • parliamentary procedure (7)
    • totp (2)
    • reverse engineering (20)
    • obfuscation (12)
    • single transferable vote (19)
    • ebook (16)
    • elections (12)
    • java (6)
    • linux (33)
  • 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.