Over the years, the "hidden fees" were accumulating, and card surcharges could hit 1-2.5%. Now, _most_ places don't have any fees (with some food places charging weekend surcharges and some egregious places adding unsolicited tips).
2,841 karma · joined July 12, 2016
Blog: https://abstractnonsense.xyz
Email: hello@<blog-domain>
Over the years, the "hidden fees" were accumulating, and card surcharges could hit 1-2.5%. Now, _most_ places don't have any fees (with some food places charging weekend surcharges and some egregious places adding unsolicited tips).
I've been really exercising my non-fiction reading muscles of late. I'm trying weaponise it as an antidote to AI slop and doom-scrolling. My last read was Designing Data-Intensive Applications by Martin Klepmann (the newly released second edition), it was a wonderful read!
Some incredibly interesting perspectives on maths and computing
It's really nice having a decently powerful scripting component, it makes for some fun literate-style programming. You can package things up pretty easily for others to use, too[^2]. It even supports WASM plugins, if you want to go wild.
This package, conch[^3], renders a mini OS and terminal, based on Typst:
> A shell simulator that renders interactive terminal sessions in Typst, powered by a Rust WASM plugin.
> Type shell commands in your Typst document. Conch executes them against a virtual filesystem and renders a realistic terminal window — complete with colored output, syntax highlighting, and animation support.
[^1]: https://github.com/stochastical/distro
The crux of HE is that it provides a _homomorphism_: you map from the space of plaintext to the space of cipher texts, but the mapping preserves arithmetic properties such as addition and multiplication. To be clear - this means that the server can add and multiply the cipher texts, but the plaintext result of that operation is still irreversible without the private key. To the server, it looks like random noise.
I don't think it's helpful to think about this as connected to deep learning or embedding spaces. An excellent resource I'd recommend is Jeremy Kun's guide: https://www.jeremykun.com/2024/05/04/fhe-overview/
One thing that was a _little_ frustrating coming from Python, though, was the need to rely on crates for basic things like random number generation and network requests. It pulls in a lot, even if you only need a little. I understand the Rust community prefers it that way as it's easier to evolve rather than be stuck with backwards-compatability requirements. But I still missed "batteries included" Python.
My personal blog, I normally post about maths and computer science. But sometimes random design things, or bits about linguistics and words.
I found it hard to find a good reference that had a clean implementation end to end (without calling BLAS/LAPACK subroutines under the hood). It also wasn't easy to find proper convergence properties for different classes of matrices, but I fear I likely wasn't looking in the right places.
As of today, the [docs](https://gohugo.io/templates/lookup-order/) still haven't been fully adjusted to reflect the new system:
> We did a complete overhaul of Hugo’s template system in v0.146.0. We’re working on getting all of the relevant documentation up to date, but until then, see this page.
I don't mind breaking changes, but it'd sure be nice if the documentation reflected the changes.
Technologies: Python. Have also worked with Haskell, C, Prolog, Java, MATLAB, SAS to various degrees of proficiency.
Résumé/CV: Please check my LinkedIn from my profile.
Email: hello@abstractnonsense.xyz
Blog: https://abstractnonsense.xyz. I like to blog about mathematics and computer science.
Pitch: Currently working as a Data Scientist and early-careers AI researcher at a major Australian bank. Bachelor in mathematics & CS, looking to go back for a Masters in mathematics. I'm looking for challenging roles that ideally involve maths. I enjoy functional programming, reading books and papers, blogging about arcane things and learning new languages and algorithms.
I don't like JavaScript, and I've been meaning to learn Rust for a while, so I'm compiling the Rust algorithm to WebAssembly to run in the browser natively! It's been a fun trip back into the arcane world of numerical algorithms and linear algebra!
I've written up some thoughts on the design of btop here: https://abstractnonsense.xyz/micro-blog/2025-04-26-btop-of-y...
Ordinarily, when you look up "regex for card numbers" you get a list of card provider prefixes and length constraints, but this doesn't do any validation on the check digit (calculated using the Luhn algorithm)!
Spoiler: Regex's _can_ recognise the set of valid card numbers, but the resulting regex would be exponential in the number of states for the minimal DFA (as far as I can reason).
Keen to try it out! I'm hoping it improves rendering - I was seeing some issues with SVG output for inline maths in Safari.
KaTeX is neat and fast, but alas the quality of the typesetting is really sub-par compared to MathJax.
p="one two three four five six seven eight nine".split();sum(int(x[0]+x[-1])for x in["".join([["",s[0]][s[0].isdigit()],str(p.index(w)+1)][s.startswith(w)]for s in[l[i:]for i in range(len(l))]for w in p)for l in open("input.txt")])