Spanish traders set the standard for GnuCash database design

Posted by vitalikpie 1 day ago

Counter130Comment82OpenOriginal

Comments

Comment by gus_massa 1 day ago

Side question:

I'm surprised by the explanation of the 8 in the "real de a a ocho" because "traders counted gold doubloons on their fingers, skipping their thumbs." (and the link to investopedia has a similar explanation).

But from https://en.wikipedia.org/wiki/Doubloon

> Spanish American gold coins were minted in one-half, one, two, four, and eight escudo denominations, with each escudo worth around two Spanish dollars or $2. The two-escudo (or $4 coin) was the "doubloon" or "pistole", and the large eight-escudo (or $16) was a "quadruple pistole"

I think it makes more sense that some time ago it was possible to split some coins in half and quarters, so someone decide to continue the tradition and use base 2 to move up.

Comment by franciscop 1 day ago

Yes, my historical understanding is definitely that it could be split into two easily, not that we counted with our fingers skipping the thumb (Spaniard here).

Comment by vitalikpie 1 day ago

Yeah, I thought about it when I first saw the coin cut into pieces - https://www.pirateglossary.com/glossary/pieces-of-eight

But then why didn't they cut it into 10 pieces - https://etc.usf.edu/clipart/40600/40610/pie_01-10a_40610.htm ?

Comment by Swizec 1 day ago

> But then why didn't they cut it into 10 pieces - https://etc.usf.edu/clipart/40600/40610/pie_01-10a_40610.htm ?

Ever tried cutting a cake? It’s a lot easier to visually judge half of a circle segment. You’d need a compass to get accurate tenths (or fifths) and I imagine it is generally frowned upon if some tenths are a lot smaller than others (happens a lot with cake)

Comment by burnte 1 day ago

8 pieces is easier for a human than 10. You halve it, then again, then halve the remaining quarters. For 10 you'd need to work harder to get the angles right and that's a lot harder.

Comment by noja 1 day ago

Easier to cut into halves?

Comment by vitalikpie 1 day ago

Yeah. Likely so. While at the same time, they may have some other reason - https://www.youtube.com/watch?v=g9S6qD_Wylw

Comment by cett 1 day ago

Reminds me a bit of how in the UK the guinea coin ceased to circulate decades ago but it's still used for bidding on racehorse auctions.

1 guinea = 1.05 pounds

You purchase the horse in guineas, seller gets paid in pounds, auctioneer keeps the missing 5% as commission.

Comment by flopsamjetsam 1 day ago

That's fascinating, I remember my Dad telling me you would pay for something in guineas as a sort of tip, but I never knew it was for horses (this is in Australia).

Comment by snypher 1 day ago

My grandpa always called horse racing in general "the guineas", but I always assumed it was "the ginnies" for some reason.

Comment by benj111 20 hours ago

The guinea was also seen as posher. So guineas were used as a social indicator

Comment by gus_massa 16 hours ago

I agree.

[Time sink warning] [Fractions warning]

There is an interesting video by Lindybeige that explains the old British coin system. The part about the guinea is at minute 42, and in particular explains why it was worth 21 instead of 20.

https://youtube.com/watch?v=R2paSGQRwvo

Comment by dmurray 1 day ago

> So, unless you are a Spanish trader from the 16th century or have a book with fractional stocks from the 90s, HandsOnMoney will serve you well.

US treasury futures are still priced in 32nds of a dollar increments. Sorry, that's not true, they're quoted in 32nds, but sometimes priced in half-, quarter- or eighth-32nds. One might trade at 105-22.5, which means 105 and 45/64ths.

https://www.cmegroup.com/trading/interest-rates/basics-of-us...

Comment by vitalikpie 1 day ago

God damn it! I did not bother to check the treasury. Thank you for catching mistake - I will correct it.

I knew there will be something to hunt minor units.

Comment by kulkarnic 1 day ago

Treasuries, MBS, most non-corporate bonds all trade in eighths or 64ths. Coupon rates are in eighths as well.

Commodities I think no longer do, but did until recently.

Comment by wodenokoto 1 day ago

> 1. Japanese Yen has no minor units (due to post-WWII inflation)

Japanese yen do have minor units, and they are confusingly called sen (which is a homonym for one thousand)

Now a days they are mostly used for stock prices. But they exist!

Comment by vitalikpie 1 day ago

Did not know that. Will update the article. Thank you!

Comment by WhyNotHugo 1 day ago

I used GNUCash years ago in Argentina while we had high inflation. Some operations were in local currency and other are Dollars. The currency exchange changing hourly. Tracking finance is a nightmare, since you basically need an exchange rate for every operation.

Comment by vitalikpie 1 day ago

Lived through something like this after USSR collapsed and before Hryvnya was introduced. Boy I remember the bread cost - 10,000,000 :D

Comment by phyzix5761 1 day ago

How's the inflation now with Milei's changes? I know charts show its at a 10 year low but reality could feel different.

Comment by bgribble 1 day ago

I committed to the GnuCash codebase pretty regularly in the 1999-2002 era... I think maybe I actually implemented the fractional representation that the article discusses? Not sure, it was a long time ago! I definitely remember receiving some very heated emails about how this was total nonsense and there was no reason to do anything other than a decimal representation. The phrase "a superhighway of abstraction, leading nowhere" has stuck with me for lo these many years :) good times

Comment by vitalikpie 1 day ago

Thanks for the info! But did you guys thought about fractional commodities those days? Or was it clear that it is going away?

Comment by bgribble 1 day ago

I seem to remember that we were aware that fractional commodities were going away, but exact rational values would still be important to be able to represent historical holdings and transactions.

Comment by vitalikpie 1 day ago

In hindsight do you think it was an right decision or too "pure"?

Comment by bgribble 1 day ago

I guess I don't really have an opinion about that. Certainly an exact representation of decimal numbers was essential, and was something we needed to implement at the time, but going to a fully rational numeric stack was arguably overkill.

The current value of held assets in another currency isn't really "counting" any more, it's a prediction of the outcome of some future transaction that hasn't happened. So I'm less concerned about exactly computing it than I am in never making a mistake in assets that I am counting, i.e. keeping in one account and only incrementing and decrementing the amount when a transaction occurs.

Comment by abdullahkhalids 1 day ago

I would like to use finance tracking products like GNUCash. But I don't have the patience to download the csv for half a dozen accounts every month (Products like plaid are a no go from a basic security perspective). I am in Canada, and there seems to be no hope that I will have API access to my bank accounts anytime soon.

Also, did I mention how much it annoys me that the transaction description differs between the CSV and the PDF statement for pretty much all banks I use.

Comment by bregma 1 day ago

Well, there is legislation before Committee to mandate open APIs that any accredited institution can use. As a consumer you will not be eligible, but you will be allowed to pay some third-party to pull your data from your bank and save it in their database, after which maybe they might allow you to download it in their proprietary format should they choose.

Me, I use plain-text accounting (hledger) that automatically imports the CSVs from my bank and categorizes transactions automatically, and I wrote some quick scripts using Python to import the PDFs from my brokerages and paystubs. It's not automated pulls but I only have a handful of accounts so it's really not a pain to manually pull statements once a month and run the import scripts. It takes me longer to reconcile everything to the penny then it does to do the imports, and it's a whale of a lot faster than manually entering through GNUCash. Plus, it's plain text so all you need is vim, git, and the command line.

Comment by abdullahkhalids 1 day ago

The openbanking thing has been going on for 4-5 years now, with no end in sight. The banks simply do not want to enable a system which allows third party apps to step into the space, and they are too large and lobby a lot. I don't expect anything to happen for a while still.

Comment by vitalikpie 1 day ago

I was contemplating between hledger and GnuCash for a while and then choose GnuCash because it has pretty good UX for transactions entry.

The missing piece for me was a mobile app. So trying closing this gap with HandsOnMoney.

But I'll be honest - I'm putting off the statement import as much as I can until my financial anxiety kicks in.

Comment by neilv 1 day ago

Import-only is the lazy way. :) If you want, GnuCash also has features to support manually entering each transaction as it occurs.

Then GnuCash has features to match up financial institutions data exports against your transaction splits, see the discrepancies, and then reconcile against their PDF statements.

It's a way of life, but you always know what money you have, where. Although that sounds like something for wealthy people, I'd say it's actually more important the less money you have.

Comment by abdullahkhalids 1 day ago

When I was a poor student, I carried around a small notepad in my pocket and a pencil and wrote down every transaction. Only way I ensured discipline to not waste money and then go hungry later.

But now I am ruined by smartphones, which are way too slow to type in every transaction manually.

Comment by vitalikpie 1 day ago

Agree. I wish banks have their APIs open. It's 2026 and we have OIDC.

But I used to actually pull the CSV once a week and feed it to GnuCash. It's pretty good at auto-categorization.

Also I simplified my finances to only a couple of checking accounts and only one credit account (for car rentals).

Comment by rbanffy 1 day ago

> I wish banks have their APIs open

There needs to be a lot of investment in training and safe defaults though. Most people are not ready to automate even a little of their banking like that.

I would even prefer banks had the option to push data to trusted feeds than having open APIs you could call on your own.

Comment by abdullahkhalids 1 day ago

Only need a read only API for financial analysis.

I definitely do not support an API for doing financial transactions. That will result in so much hacking and theft.

Comment by doodlesdev 1 day ago

Yup or restrict API usage to trusted providers. In Brazil, we have a system called Open Finance [1] which allows you to connect bank account, so you can see investments, money spent, credit card spending and limit, etc. from your other bank accounts. Some local personal finance systems integrate into Open Finance to pull all of this data for you.

[1]: https://openfinancebrasil.org.br/

Comment by vitalikpie 1 day ago

Agree on this. Current situation is kinda broken:

- people do not trust Plaid and Finicity - data is captive inside of bank portals - each damn CSV has it's own format

Comment by vsviridov 1 day ago

I'm using self-hosted Sure.am and also using SimpleFin to connect to Canadian banks. It works, but barely, since it effectively scrapes with no real API access. I have to login daily to update 2-FA on various accounts, and have suffered account lockouts a couple of times, due to "suspicious activity".

But it still beats downloading multiple exports from the bank and importing it manually...

Comment by phyzix5761 1 day ago

I simplified to just 2 accounts and I enter them manually twice a week. I keep a detailed budget so it helps to do it that frequently.

Comment by vitalikpie 1 day ago

Do you do budget in GnuCash or somewhere else?

Comment by pbreit 1 day ago

Storing money as an integer is OK but I've never liked APIs that required financial amounts to be integers. Amounts always eventually need to be displayed to a human as a decimal.

Comment by stronglikedan 1 day ago

displaying as a decimal is nondestructive, whereas doing math with a decimal is asking for trouble

Comment by vitalikpie 1 day ago

Yeah this is exactly what I do under the hood. All the data is stored as Ints, charts use double for speed, views use decimal to display stuff properly in the user locale.

P.S. Doubles are absolute evil for calculations:

    @Test
    func test() {
        var a = Decimal(100.4449315513924) * 100 // It's me being dumb, not noticing that
        let b = NSDecimalNumber(decimal: a).intValue
        #expect(b == 10044) // Expectation failed: (b → -8402) == 1044
    }

Comment by hakfoo 1 day ago

Because decimal types are still vanishingly scarce as a built-in in modern languages.

Storage as an integer often adds complexity because of currency reforms. Decimals can and have been dropped in the past.

Comment by benj111 20 hours ago

>Computers are not good with fractions.

You're introducing a currency that does 1/8ths. A computer can handle that a lot better than decimal.

Comment by 6LLvveMx2koXfwn 1 day ago

I wonder if Hackernews ranking algorithm has been updated to exclude comments toing and froing about whether or not the article is LLM generated!

Comment by vitalikpie 1 day ago

haha, true.

Thing is - I'm not a English speaker. But I chat a lot with Claude/ChatGPT - i feel like I'm picking the style from them unintentionally.

Comment by simonebrunozzi 1 day ago

Doesn't sound like reality to me. The article looks very much AI-generated. Nothing to do with not being an English native speaker.

Comment by vitalikpie 1 day ago

hm, I don't have any other ways to prove it. The thing is - I thought this is something LLM can't write about.

Just imagine a prompt: "Hey Claude, go ahead and come up with idea why GnuCash stores numbers as fractions and come up with an article for HN". I actually tried it and god damn thing came up with something very similar :D

Comment by aitchnyu 1 day ago

I was cutting edge, a few people assumed I was a Markhov chain.

Comment by fractallyte 1 day ago

I am a native English speaker, and I find accusations of LLM-writing exceedingly annoying – to the point where I sometimes intentionally write in that style, just so I can hit back with a profanity.

Comment by vitalikpie 1 day ago

Yeah, I'm just a developer mostly chatting with LLMs. I hope I'll develop a distinct style some day.

Comment by swordlucky666 1 day ago

The discussion on Spanish traders set the standa raises interesting points. In practical applications, the key challenge is balancing performance with maintainability. Would be valuable to see more concrete examples of trade-offs.

Comment by vitalikpie 1 day ago

Thanks for idea. I think I'll do another more techy article on this.

Comment by 1 day ago

Comment by gostsamo 1 day ago

Feels ai generated and waste of time to read even though the topic could be interesting.

Comment by lastorset 16 hours ago

So surprised to see people saying this. AI articles tend to be soulless, smooth and samey, this one has quirk, nerdy charm and personality.

Comment by fbuilesv 1 day ago

I think English is not the first language of the author ("we are counting fingers and thumbs"?).

There's also a `Surprisingly written by a human :)` at the bottom.

Comment by vitalikpie 1 day ago

yep, I'm Ukrainian

Comment by ponyous 1 day ago

> Surprisingly written by a human :)

Article ends with this

Comment by gostsamo 1 day ago

A true surprise if so, but still low in informational density and annoying to read.

Comment by vitalikpie 1 day ago

huh, sorry I'm really bad at writing - this is one of my first attempts

Comment by mlcruz 1 day ago

I really enjoyed the read. Not everything needs to be some sort of utilitarian information density optimized reading piece.

Keep up the good work!

Comment by vitalikpie 1 day ago

Thanks!

Comment by jrm4 1 day ago

You're not. You're not bad at all. Please ignore the negatives here, they're certainly more a result of AI paranoia/fatigue than meaningful criticism.

Anyone reading this and who is complaining that it's too long and content-light? Respectfully, you really need to check yourselves, you're probably the one with the "internet brain" dopamine or whatever problem. This is NOT an unreasonable amount/style of words for what is said.

Comment by fractallyte 1 day ago

You're not bad at writing. You have your own style. Keep it up! This was an interesting article.

Comment by vitalikpie 1 day ago

Thanks :)

Comment by gostsamo 1 day ago

Your title promises a story about the spanish traders. It does not deliver, but talks about 3 other different topics that I'm not interested in and jumping between them to test my nerves. If it is about the architecture of whatever you are doing, put the architecture in the title and don't make your title an offhand comment somewhere there. Fucked up clickbite.

Comment by vitalikpie 1 day ago

Yeah, sorry. It's kind of intentional. Did not want to give it a boring name like "Storing fractions vs decimals".

Comment by internet_points 1 day ago

Don't be. Keep writing! Boring people gonna be boring. I for one found it a fun article with a great title, and I also liked your other https://handson.money/blog/2026-05-20-ai-coding/

Comment by vitalikpie 1 day ago

Thanks. After all I'm a human too. I'm prone to AI psychosis.

Comment by e40 1 day ago

Clickbait is a thing and pisses people off.

Comment by bitwize 1 day ago

Yeah, I got an AI vibe off it too, and was surprised to find this. The problem is, to quote Orson Welles, "it's not as conversationally written. It's full if things that are only correct because they're grammatical, but it's tough on the ear, you see." AI writing bears a resemblance to the most insufferable marketing speak, so if you ape that kind of writing in an attempt to sound punchy or whatever, you're going to be accused of being a bot.

Comment by vitalikpie 1 day ago

I think it's because thought-process is done in Russian, translated into English and the checked for grammar mistakes with Grammarly.

Comment by bitwize 1 day ago

That would explain a lot. Grammarly went full LLM brainrot a few years back, so if you rely on its suggestions your writing will... sound a certain way.

Comment by vitalikpie 1 day ago

I'm using a free version, so if an LLM suggestions slipped in - it only a couple of them.

Comment by Buxato 1 day ago

I think its not.

Comment by vitalikpie 1 day ago

It is :) No AI slop. I'm intentionally trying to write without LLM (my previous blog posts clearly disclose it).

Comment by 1 day ago

Comment by ctxc 1 day ago

(you mean it's _not_ AI generated)

Comment by vitalikpie 1 day ago

Yeah this one is my attempt to write without LLMs rewriting my thoughts. P.S. Came to the decision after going through https://thebullshitmachines.com/

Comment by fractallyte 1 day ago

I strongly disagree. I found the whole article interesting and enlightening – I certainly wasn't aware of the topic before, and I'm glad it was posted on HN.

Furthermore, it didn't feel LLM-generated to me. Quirky, yes; nothing wrong with that.

Comment by vitalikpie 1 day ago

Thanks! I believe blogs and indie products should have personality - otherwise it so easy to overlook them.

Comment by vitalikpie 1 day ago

Curious what made you think it's AI slop?

Comment by stronglikedan 1 day ago

the overwhelming desire to be an edgy edgelord