-
DrCr, a double-entry bookkeeping tool
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
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
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
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
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
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
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)
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
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
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,… »