Hacker News new | comments | ask | show | jobs | submit login

(Coming from a Windows background) I often wonder what the appeal is to something like this.

(Seriously!) Why would you use something like this over say a spreadsheet? Is it really much easier than opening a browser and running Google Docs???




> Why would you use something like this over say a spreadsheet?

Because doing double entry accounting with the kind of reporting, balance checking, automatic addition of balancing entries, etc., that ledger-cli provides is difficult.

And because its plain text, it works quite well with the same kind of version control, diffing, etc., tools used for code.

> Is it really much easier than opening a browser and running Google Docs???

Yes.


* ledger is for double-entry accounting. Doing that in a spreadsheet can be a huge pain. When you then want to query the data in different ways, that will add a ton of complexity to your spreadsheet.

* It is plain text, so you can keep your data in version control.

* It has awesome reporting capabilities. These are builtin, so you don't have to create them from scratch.

Spreadsheets are nice and simple, but once you do anything moderately complex you are asking for bugs under all of your hidden formulas.


Keep in mind that this is a ledger, not a spreadsheet. You record transactions in a text editor. The ledger-cli program is simply a report generator. From the perspective of an "accounting application", what you might think of as the meat of the program is actually the text editor. There are plugins for emacs and vim to do text highlighting and insert dates, etc, but it's basically free form editing.

In a way, it's exactly what you are thinking would be superior: why not use some general purpose tool for data entry and then write some macros for generating reports? It's just using a text editor rather than a spreadsheet.

The text editor is actually quite a bit better suited to this kind of entry than a spreadsheet. Have a look at the examples at the website. Since the journal is also just a text file, you can easily use a version control systems on the data -- this has saved me more times than I care to mention.

So, yes, it really is easier than just about everything else you could imagine. If you are interested in double entry accounting, I highly recommend it.


A spreadsheet used like this is almost always a database in disguise, but it's way too easy to delete a row or cell by mistake. Also double-entry bookkeeping does not lend itself well to a spreadsheet model. And as others said: open source, version control, and extreme ease. For someone like me who types a lot and lives on the command line, it's infinitely quicker than firing up a spreadsheet program.


Over a spreadsheet is an easy sell - dual-entry accounting is an absolute revelation.

Over the many good GUI dual-entry accounting programs, I'm not so sure.


Well something like quickbooks its much more transparent and Ledger isn't constantly trying to upsell you some service :-) Agreed on the spreadsheet, its balance checking is really the key feature here that spreadsheets don't do.

The simplicity of simple text files means you don't have to worry about your files not being readable by a future you. Which is not the case of every 'gui' dual-entry accounting system to date. Seriously, pick any system you could have used in 2000 and figure out if you can read its files now.


Ledger also isn't bribing Congress to keep the tax system complex enough that you need Quicken or HR Block.

I won't touch anything from Intuit.


    > Seriously, pick any system you could have used in
    > 2000 and figure out if you can read its files now
Back then I used Gnucash. It's simple XML, and I wrote some Perl to pull a report on it recently. MoneyDance, which I use now, seems to have some kind of binary format, but will export XML, CSV, etc etc...


Well, you might want a computer to do all of the work and that's easier via a command line app (for most programmers) than doing it all in VBA including parsing a bunch of files and generating the entries.

As for the GUI, still needs to be built on top of something, why not this.

This actually looks really cool and I'm interested in checking it out. I've often thought about how cool it would be to have double entry accounting for every day life.


    > you might want a computer to do all of the work
What is "all the work" here? MoneyDance (which I've used for a few years now) imports directly from Amex, my checking account, and three different credit card accounts... It generally classifies correctly, but then I want to manually review each transaction classification manually as some snacks or electronics are business expenditures, some are not... My accounts are generally pretty complicated, but I'm yet to find a use-case that MoneyDance (or GnuCash, back in the day) can't support...

I'm a programmer, and I love programming, but not everything needs my time and attention to program. I also (no longer) run my own mail server, just because I can.


MoneyDance doesn't appear to be a double entry system. The nice thing about double entry bookkeeping, is it allows some pretty complicated cash-flow tracking - so setting up your accounts for a small business or consultancy is a bit easier.


I'm curious about this. I thought double entry book-keeping was mostly an artefact of manual/analog book-keeping. Humans are notoriously error-prone, and it's easier to avoid errors when two sets of numbers are supposed to balance out (ideally, exactly).

How is double entry beneficial once all transactions are documented digitally? Could you give a somewhat concrete example? (Contrived or otherwise)?


You can think of double entry accounting as unit tests for your financial books. It definitely does help in making sure that you don't make mistakes when you enter the data, but where it really shines is analysis after the fact.

In Japan, the government actually gives me concessions for submitting my documents for income tax as double entry accounting. This is because it saves them huge amounts of money. So, if I document an expense that I want to get a deduction for, they can easily check that there is a corresponding withdrawal from the bank account to pay that expense. Especially for complicated areas, like my payroll, where I have up to 5 bank accounts in play (some of them off shore), it's absolutely the only way they can go back and understand what the heck is going on.

Similarly, for me, I have sometimes gone back and discovered that I got an exchange rate wrong. Fixing that mistake is a nightmare (especially if you have to pay capital gains tax in a LIFO or FIFO manner -- you have to record the capital gains or losses for each "lot" of currency that you purchased). Double entry accounting will totally save your butt as you ripple through all your transactions changing the exchange rate for the foreign currency. If you get it wrong (i.e. over or underspend a particular "lot"), the numbers won't balance at the end.

Is it necessary for your average person? Obviously not. As your finances become more complicated it kind of goes like this: intellectually interesting -> super cool -> crap, how did I get by without this? -> there is absolutely no other way to do it and not get arrested for tax evasion.


Double-entry refers to the number of accounts related to a transaction, rather than the process of entering it twice.

When you think about it, all transactions have naturally (at least) a from and a to account. In the simplest example, I move $100 from one checking account to another. This is a pain to model in a spreadsheet, where I literally create two entries, but very easy to model in an electronic dual-entry system where I create a single transaction with a from and a to end point, and an amount.

Consider if I decide to buy a stock from my checking account. The from is my checking account, and then there are two "to" accounts - an account which models the value of the stock, and an account for the vendor's charges for the purchase. I might decide to aggregate all such bank charges to a single virtual account for this purpose. In this case, that virtual account would be the same as a "category" in a spreadsheet based model.

It can also make budgeting and cash-flow visualization easier. I have a virtual account called "Holiday Budget", which makes a transaction to another virtual account called "Spent on Holidays" of $x every month. Whenever I spend money on a holiday item from my checking account, the "from" is my checking account, and the "to" is my "Holiday Budget". This keeps my net-worth and budgeting reports very simple - they say I spend the same $x on holidays every month - while accounting for some very lumpy spending. I can easily see if I'm over or under budget by looking at the value of the virtual account "Holiday Budget" at any point.

It makes recording the value of unconventional assets easier. When I buy a laptop, I create a new account for the laptop, and transfer the money from my checking account to the virtual account that represents the value of the laptop. Every month, I draw down money from the laptop account in to an account called "depreciation". This helps me keep my budget reports insulated from lumpy spending too.

A big use-case as well for me is the purchase of expensive refundable plane tickets - essentially, I buy personal futures in plane tickets when I see a good price. The virtual accounts that dual-entry allows means that when I buy a refundable ticket, I treat it as an asset in a virtual account until it's used. Again, this helps me track my spending and budgetting more effectively.


> A big use-case as well for me is the purchase of expensive refundable plane tickets - essentially, I buy personal futures in plane tickets when I see a good price. The virtual accounts that dual-entry allows means that when I buy a refundable ticket, I treat it as an asset in a virtual account until it's used. Again, this helps me track my spending and budgetting more effectively.

I would like to hear more about this. Do you have alerts set up? Does this end up saving you money? Do you get to re-schedule the flight an unlimited number of times (pushing the future out) or do you have to cancel and rebuy periodically? Can you use exercise the option early?


It's far less sophisticated than this. A route I take regularly costs ~$2700-$5000. I refuse to pay more than $3000 so I tend to book all the dates I might travel ~6 months in advance, and cancel them if I don't need them, which costs about $50.


> Double-entry refers to the number of accounts related to a transaction, rather than the process of entering it twice.

Hm. I guess I didn't know there was such a thing as single-entry :-)

Thank you for clarifying, that makes sense. We actually had a (little too much, or too little) about this in high-school. But it looked a lot more like: https://en.wikipedia.org/wiki/Double-entry_bookkeeping_syste... (debit and credit "accounts").

It struck me as odd to keep the term when handling it somewhat differently (although also somewhat similarly).

I suppose the term is old enough that it covers both "double meta-data" and "double(redundant/check-summed) storage".


Newbie to ledger here.

Why not move $x from checking to Holiday Budget every month, and then track holiday spending by moving money from Holiday Budget to Spent on Holidays?

Guess it throws off net worth calculations a bit, as you'd have to include the Holiday Budget as well in there. Are there other reasons?


Check out this section and the following section of the ledger docs: http://ledger-cli.org/3.0/doc/ledger3.html#Dealing-with-Pett...


In outline, that's not wrong, though in detail it might be because the $ are still, presumably, actually in your checking account. But that's correctable, with the right account structure. Instead of just "Checking" and "Holiday Budget", make it "Assets:Checking" and "Assets:Checking:Holiday Budget" (I'd prefer "Holiday Fund").


Because Holiday Budget isn't a real account, and my checking one is. If money didn't leave the checking account, it would show an incorrect budget if I marked that it had.


OK. Just that, I find it a bit odd that money goes into the "budget" when you spend, not when you allocate it, and vice versa :)


@peteretep gave a great reply - maybe better than this one, but here's my view on it:

Stuff like this (and the next section) is easily doable: http://ledger-cli.org/3.0/doc/ledger3.html#Dealing-with-Pett...

A lot of the things you'll think to do in an electronic system, with tags and tables and so on, can ultimately be modeled by accounts in a double entry system, and probably just as powerfully once you add things like "virtual accounts" and the like.

At some point, it's sort of like greenspun's 10th rule - any sufficiently advanced money tracking system will implement a version of double entry accounting in it.


    > MoneyDance doesn't appear to be a double entry system
You didn't look very carefully then


All I found was an FAQ entry from MoneyDance talking about how underneath it's double entry, but they try their hardest to hide that fact from the users. So, yeah, I guess technically it's double entry, but not in a way that is immediately obvious for a lot of use cases.


If you can explain to me which use cases it doesn't support, I'd be interested...?


Thanks for sharing moneydance, looks interesting and I was unfamiliar.


> I've often thought about how cool it would be to have double entry accounting for every day life. I have a hard time imagining something that is less cool than accounting. It's certainly a good idea though.


I often see this sort of comment come from Windows folk. It's very hard to justify a reason. You're either bit by the CLI bug, or you aren't.

To those who don't "get" the CLI madness, I can see why you're drawn to the Windows ecosystem.


One of the best things I ever did for humanity was infect my cube-mate with the cli bug.

Bash, to Vim, to Python. It was glorious.


You need to be shown it. It's the same as with people doing only Java hearing about REPL. It's weird at first, but once you get it, you don't want to go back.


You ask "why" on a site named "Hacker News"?


Most people are helpful (so long as you don't sound snarky) and don't mind answering...


Yes. At the risk of over-explaining: I meant my comment as a sideways remark that Hacker News is full of hackers, many of whom believe a cool program is its own reward, whether it's needed commercially or not. I did not mean to disparage the question or the questioner.


Granted, this is the extreme, but in my mind this is simply the manifestation of the "do one thing well" mantra of *nix. The basic chains of tools allowing extensibility and chaining from one to another because they're so well-rounded in their own right.

This has always been a thing (reduction to absurdity); these days you just see it more often as javascript libraries for anything you could possibly want.


I tried to do this with a spreadsheet years ago, for single entry check balancing. Formulas, if this, if that, it got out of control. It made me a believer of using something already existing if that suffices. I do like creating things, but not that, and not in a spreadsheet.

That said, if that works for you, then that's exactly what you should do.


Try doing something the program doesn't support.

Experts prefer plain-text formats and command-line tools because with a little bit of elbow grease you can always do things the program creator never thought of or chose not to support.


    > Experts prefer plain-text formats and command-line tools
Sure. Expert computer users prefer Lynx for web-browsing, expert Windows and Apple developers prefer vim and gcc, expert fiction writers prefer using emacs, and professional accountants use command-line accountancy tools...


I think I got Poe'd here - I'm not sure if you're serious or not, because the only thing that sounds stretched to me is the Lynx one. Of adoption of CLI among professional accountants I know nothing about, but the rest pretty much checks out.


In my experience, Windows developers (if they don't come from the *nix world) after often very uncomfortable with the command line (or anything non-Windows), and I doubt many authors know anything about emacs...


> and I doubt many authors know anything about emacs...

You'd be surprised. There's a list of writers who use Emacs floating somewhere around the interwebz, Vernor Vinge being a notable example. I can't find it right now, but few of those authors are mentioned here: http://irreal.org/blog/?p=4651.


I don't doubt it for a second, but these people are outliers. This would be like me advocating how Wordperfect is widespread among authors, based on the fact that George RR Martin still uses it.


WordStar, not WordPerfect.


None of Lynx, vim, or emacs are "command-line tools."


Indeed. They are more like GUI faked by the command line.


"faked by the command line"

"The command line" isn't really involved here - they're arguably GUIs rendered in the terminal. Another term is "Captive User Interface", although a text editor is one of the few places I don't mind it.




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: