[HN Gopher] Spanish traders set the standard for GnuCash databas...
___________________________________________________________________
Spanish traders set the standard for GnuCash database design
Author : vitalikpie
Score : 120 points
Date : 2026-06-08 12:57 UTC (16 hours ago)
(HTM) web link (handson.money)
(TXT) w3m dump (handson.money)
| WhyNotHugo wrote:
| 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.
| vitalikpie wrote:
| Lived through something like this after USSR collapsed and
| before Hryvnya was introduced. Boy I remember the bread cost -
| 10,000,000 :D
| phyzix5761 wrote:
| How's the inflation now with Milei's changes? I know charts
| show its at a 10 year low but reality could feel different.
| gostsamo wrote:
| Feels ai generated and waste of time to read even though the
| topic could be interesting.
| ponyous wrote:
| > Surprisingly written by a human :)
|
| Article ends with this
| gostsamo wrote:
| A true surprise if so, but still low in informational density
| and annoying to read.
| vitalikpie wrote:
| huh, sorry I'm really bad at writing - this is one of my
| first attempts
| gostsamo wrote:
| 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.
| vitalikpie wrote:
| Yeah, sorry. It's kind of intentional. Did not want to
| give it a boring name like "Storing fractions vs
| decimals".
| e40 wrote:
| Clickbait is a thing and pisses people off.
| internet_points wrote:
| 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/
| vitalikpie wrote:
| Thanks. After all I'm a human too. I'm prone to AI
| psychosis.
| mlcruz wrote:
| I really enjoyed the read. Not everything needs to be
| some sort of utilitarian information density optimized
| reading piece.
|
| Keep up the good work!
| vitalikpie wrote:
| Thanks!
| fractallyte wrote:
| You're not bad at writing. You have your own style. Keep
| it up! This was an interesting article.
| vitalikpie wrote:
| Thanks :)
| jrm4 wrote:
| 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.
| bitwize wrote:
| 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.
| vitalikpie wrote:
| I think it's because thought-process is done in Russian,
| translated into English and the checked for grammar
| mistakes with Grammarly.
| bitwize wrote:
| 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.
| vitalikpie wrote:
| I'm using a free version, so if an LLM suggestions
| slipped in - it only a couple of them.
| Buxato wrote:
| I think its not.
| vitalikpie wrote:
| It is :) No AI slop. I'm intentionally trying to write
| without LLM (my previous blog posts clearly disclose it).
| ctxc wrote:
| (you mean it's _not_ AI generated)
| vitalikpie wrote:
| 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/
| vitalikpie wrote:
| Curious what made you think it's AI slop?
| stronglikedan wrote:
| the overwhelming desire to be an edgy edgelord
| fbuilesv wrote:
| 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.
| vitalikpie wrote:
| yep, I'm Ukrainian
| fractallyte wrote:
| 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.
| vitalikpie wrote:
| Thanks! I believe blogs and indie products should have
| personality - otherwise it so easy to overlook them.
| abdullahkhalids wrote:
| 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.
| vitalikpie wrote:
| 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).
| rbanffy wrote:
| > 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.
| abdullahkhalids wrote:
| 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.
| doodlesdev wrote:
| 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/
| vitalikpie wrote:
| 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
| phyzix5761 wrote:
| 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.
| vitalikpie wrote:
| Do you do budget in GnuCash or somewhere else?
| vsviridov wrote:
| 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...
| bregma wrote:
| 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.
| vitalikpie wrote:
| 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.
| abdullahkhalids wrote:
| 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.
| neilv wrote:
| 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.
| abdullahkhalids wrote:
| 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.
| 6LLvveMx2koXfwn wrote:
| I wonder if Hackernews ranking algorithm has been updated to
| exclude comments toing and froing about whether or not the
| article is LLM generated!
| vitalikpie wrote:
| 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.
| simonebrunozzi wrote:
| Doesn't sound like reality to me. The article looks very much
| AI-generated. Nothing to do with not being an English native
| speaker.
| vitalikpie wrote:
| 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
| fractallyte wrote:
| 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.
| vitalikpie wrote:
| Yeah, I'm just a developer mostly chatting with LLMs. I
| hope I'll develop a distinct style some day.
| aitchnyu wrote:
| I was cutting edge, a few people assumed I was a Markhov
| chain.
| swordlucky666 wrote:
| 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.
| vitalikpie wrote:
| Thanks for idea. I think I'll do another more techy article on
| this.
| gus_massa wrote:
| 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.
| vitalikpie wrote:
| 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 ?
| Swizec wrote:
| > 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)
| noja wrote:
| Easier to cut into halves?
| vitalikpie wrote:
| Yeah. Likely so. While at the same time, they may have some
| other reason - https://www.youtube.com/watch?v=g9S6qD_Wylw
| burnte wrote:
| 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.
| franciscop wrote:
| 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).
| bgribble wrote:
| 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
| vitalikpie wrote:
| Thanks for the info! But did you guys thought about fractional
| commodities those days? Or was it clear that it is going away?
| bgribble wrote:
| 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.
| vitalikpie wrote:
| In hindsight do you think it was an right decision or too
| "pure"?
| bgribble wrote:
| 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.
| wodenokoto wrote:
| > 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!
| vitalikpie wrote:
| Did not know that. Will update the article. Thank you!
| dmurray wrote:
| > 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...
| vitalikpie wrote:
| 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.
| kulkarnic wrote:
| 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.
| cett wrote:
| 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.
| flopsamjetsam wrote:
| 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).
| snypher wrote:
| My grandpa always called horse racing in general "the
| guineas", but I always assumed it was "the ginnies" for some
| reason.
| pbreit wrote:
| 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.
| stronglikedan wrote:
| displaying as a decimal is nondestructive, whereas doing math
| with a decimal is asking for trouble
| vitalikpie wrote:
| 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 }
| hakfoo wrote:
| 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.
___________________________________________________________________
(page generated 2026-06-09 05:02 UTC)