1. 2

    I have bought two ~$25k cars new and will probably continue to buy at least one car new every 8 to 10 years.

    In exchange, I’ve gotten significant peace of mind and time back. The cars that have always ended up in the shop for long periods of time or costing me money out of my emergency fund have been my used cars. the cars that are broke down on the road have always been the used cars.

    I just recently dropped $3,000 on a repair for my one used vehicle because I could not find a replacement for it that would cost me less than approximately $300 per month over the course of the next year. I may be a little bit of a special case on that, because of the requirements of the particular large vehicle, but the sentiment stands.

    I grew up with my parents buying $2,000 to $4,000 8-12 year old used vehicles every two or three years. They were constantly breaking down and constantly in the shop. We did not have reliable transportation and that had a certain mental toll on all of us.

    1. 1

      My current car is turning 20 next year and I haven’t had too many issues with it. Some slight trouble with the battery, but otherwise okay. My previous car, on the other hand, was terrible. It was 3 years older than me and broke down maybe a dozen times. In college, I had to push it a mile to get it to the mechanic. I am not eager to replicate that situation.

      You say that an 8-12 year old car was breaking down constantly. Did you grow up in an area with a lot of snow? An 8-12 year car in California is normally alright, but I understand that in Minnesota an 8-12 year old car is a barely connected piece of scrap metal.

      1. 1

        Did you grow up in an area with a lot of snow?

        Western PA. Not as bad as MN but still pretty bad in that regard. Salt and ash is salt and ash, especially when it actually melts in PA.

    1. 3

      I’d love to see a simple getquote implementation around this web service.

      $ getquote IBM
      142.35
      
      1. 1

        I threw together something real quick. It’s not great, but you can run `./getquote.py fb’ from the command line and it should work for you.

        Probably need to run chmod +x getquote.py first to make it executable.

      1. 2

        As somebody who’s never really gotten into tracking things more carefully than a tool like Mint or its ilk would allow, what are some of the usual reasons somebody would decide to start using these tools, or I guess more broadly performing this level of accounting for one’s self/household?

        Off the top of my head and drawing a little on the FAQ in the linked page, it seems like some concerns might be privacy, needing better insight into flows to assist in doing taxes which seems like it might be especially relevant for people who are running businesses, open source… but I imagine there’s more.

        It’s always seemed like a neat idea that I might try and track and analyze these things using tools such as these, but then I stall for lack of understanding of what I gain by it.

        1. 4

          For me, one of the strongest reasons to use these PTA tools is simply a benefit of open source in general: the absence of vendor lock-in and the ability to fix problems I encounter.

          Another strong reason is the data format: it’s just text, as opposed to GnuCash or others that use complex persistence formats. Why keep the data in a binary database format, structured document (e.g. XML), or object format (e.g. JSON, YAML) when you can write a parser that builds that database from a completely human-manageable, accountant-friendly format in milliseconds? This plain text format also lends itself to consumption by standard text-oriented tooling: grep, awk, sed, etc. It lends itself also to versioning: git and friends are meant for text. Try to version XML well and you’ll solve a billion dollar problem (I know, I’ve been dealing with XML ~daily professionally for ~10 years now).

          Querying that generated database with ledger-likes’ query language is pretty straightforward. I’ve got a set of ~10 queries saved that spit out the data I need for my IRS 1040. Assuming I’ve make no clerical errors throughout the year – something that balance assertions are meant to catch – my tax preparation time is measured in minutes now.

          I use ledger for a non-profit’s finances, too. Our finances are open within the organization and we intend to publish them entirely just like an OSS project within the next year or so. Someone else filing an expense report or filling in for me if I take a break is literally a patch submission (pull request) away. I’m working on some command line donor tracking tooling that uses ledger as the recorder of finances tied to a YAML file that contains all of our donor information. Again, why have binary database formats or constantly online services when I can build and save queries that can run offline? Information security win: my donor database is as secure as my personal computer and my code hosting service.

          The one thing I find negatively tedious is simply keeping up. I’d been strictly manual for all entry of data. It would take about 6 hours per month. I’m really far behind now so I’m going to investigate automation, at least the conversion of QFX exports from my banks to ledger format, and a manual pass to correct payee names. I’d have to do that manually with Mint anyway – its renaming never worked well enough for me for the several years I used it – so I don’t mind it and might even be able to automate that some day.

        1. 2

          Fewer small extravagances: e.g. buy a newer, higher-end, used car instead of a brand new, low-end car.

          Put money into a 401k before sticking it into a savings account, even if you’re not getting a match. I lost out on 3 years of gains from 2009-2012 because I didn’t think it was worth it when I wasn’t getting a match. I didn’t fund an IRA, either. However, I did end up saving enough to buy a house so it worked out in the “end”.

          I do wish I’d gone on more small vacations. I didn’t really take vacation much because I traveled for work a lot, although most of it was to one of three destinations, two of which weren’t exactly tourist attractions.

          Obvious one less wildly valuable to 25-year-olds today: put my money where my mouth was on Bitcoin. If I’d spent $100/mo on it – which I easily could have and advised friends to do – when I first started hyping it up in 2011, my life might be very different right now. It’s still early in that ecosystem, so 25-year-olds certainly stand to benefit even at $6,490/BTC instead of the $1.50/BTC when I first got into it.

          1. 1

            Even though I prefer plaintext tools in general, for my accounting use GNUCash. It’s been around for a long time and it’s in relatively widespread use, and best of all, it’s scriptable in Scheme :). For instance, I use a custom eguile template for my freelancing invoices.

            Its manual is also a great resource if you’re new to bookkeeping, it contains a tutorial of the most common bookkeeping issues you’re likely to run into if you use it for personal and even small business accounting.

            I’ve tried the original “ledger” before but I feel really anxious about trusting myself with such a tool to keep all the entries correctly balanced in one single plain text file. What if I make a typo somewhere in the file, like removing one line ending or so, or if my editor crashes while writing a file? As a bit of a database geek, I know the benefits of ACID in databases, so I really prefer to trust this kind of data to a database-backed tool (GNUCash uses sqlite, BTW).

            1. 1

              one single plain text file

              I’ve found a decent way around this that I only have to work around every now and then when I have one single day that has dependent transactions in different accounts. I keep accounts in different files per month, e.g.

              2018
                - 01
                  - 201801-bank.ledger
                  - 201801-creditcard.ledger
                  - 201801-storecard.ledger
                  - 201801-transfers.ledger
                - 02
                  - 201802-bank.ledger
                  - 201802-creditcard.ledger
                  - 201802-storecard.ledger
                  - 201802-transfers.ledger
                - 03
                  - 201803-bank.ledger
                  - 201803-creditcard.ledger
                  - 201803-storecard.ledger
                  - 201803-transfers.ledger
              

              Transfers is where I keep transactions that touch multiple accounts or accounts that aren’t worth having a separate file for: e.g. cash in my wallet and I rarely ever use it, etc.

              Here’s a snippet from my Makefile:

              REPORTS_DIR = reports
              YEAR = 2018
              LEDGER = ledger
              LEDGER_INDEX_FILE = $(REPORTS_DIR)/$(YEAR)_includes.ledger
              LEDGER_FILE = $(REPORTS_DIR)/$(YEAR).ledger
              LEDGER_CMD = $(LEDGER) -f $(LEDGER_FILE) $(X)
              
              $(REPORTS_DIR):
              	mkdir -p reports
              
              $(LEDGER_INDEX_FILE): $(REPORTS_DIR)
              	echo "include ../opening.ledger" > [email protected]
                      # This relies on `fd` to do the right sort order for dates, which it does!
                      # replace with find if you don't have fd, which you should because it's better 
                      # https://github.com/sharkdp/fd
              	fd '.ledger' transactions | xargs -I % echo "include ../%" >> [email protected]
              
              $(LEDGER_FILE): $(LEDGER_INDEX_FILE)
              	$(LEDGER) -f $< --permissive -S d print > [email protected]
              
              bal: $(LEDGER_FILE) ## show all balances
              	$(LEDGER_CMD) balance --cleared
              
              raw: $(LEDGER_FILE) ## run a query with make raw Q="bal" or drops into console mode
              	$(LEDGER_CMD) $(Q)
              

              I’ve learned a lot about make since I originally wrote this. One of the big things I need to do is make all of the ledger files in the transactions directory be inputs to the LEDGER_INDEX_FILE task so that it gets run automatically. Right now, I have to run make clean whenever I’ve made changes to any transaction files :-/

            1. 1

              I recommend that you check beancount and its web UI called fava. I prefer beancount over hledger and ledger because of fava.

              1. 1

                What features of fava make it important for you?

                1. 1

                  I used beancount briefly and went back to Abandon and later ledger-cli within a short period of time. I don’t fully remember why – it was a few years ago now – but I did end up finding a script and writing a build system task that built a beancount file based on my ledger file and launched fava. Fava is the reason to use the beancount ecosystem but there are other ways to get the data necessary to use it!

                2. 1

                  I’m also on Beancount, mostly because of Python.

                1. 2

                  I’m OK with it as long as I can filter out articles that aren’t in my languages, especially if they contain advice only relevant to a certain country. I’m completely OK with people not in the US being able to filter out US-focused articles, too.

                  However, I think it’s up to @phatcat to decide what the general centricity of the site should be, if any at all.