hledger project notes & ideas "...simplicity of design was the most essential, guiding principle. Clarity of concepts, economy of features, efficiency and reliability of implementations were its consequences." --Niklaus Wirth * to do ** TODO bugs/cleanup *** no total in filtered balance report *** register pat doesn't filter transactions *** two acct patterns broken *** better encapsulation/layering **** above/below cacheLedger ? ** ledger features *** handle arbitrary precision accurately *** handle non-convertible currencies *** handle time logs **** fix timelog parser **** handle time amounts switch to Data.Time.* fix errors - read seconds to pico try System.Time ? *** - account/description patterns *** -p period expressions *** !include *** -j and -J graph data output *** more speed *** full per-currency precision & thousands separator handling *** ledger 3-style elision *** -d display expressions *** read gnucash files *** other ledger 3 features *** single space before currency can parse as an auto transaction ** new features *** alternate timelog format *** infer clock-out *** graph automation *** entry and smart data entry *** incorporate timeclock features *** better layout ** testing *** better use of quickcheck/smallcheck http://blog.codersbase.com/2006/09/01/simple-unit-testing-in-haskell/ *** ledger compatibility tests ** documentation *** literate manual *** better use of haddock *** differences/issues **** ledger does not support -f- (without space) **** ledger shows description comments as part of description, we do the same **** ledger does not sort register by date **** ledger can show wrong output due to thousands separators **** ledger balance with an account pattern shows a redundant total **** hledger does not choose symbol separation, thousands separators, and precision based on first entry of each currency (currently: chooses precision for all currencies based on first entry) **** hledger does not parse automated/periodic entries except at start of file * things I want to know ** time where have I been spending my time in recent weeks ? where have I spent my time today ? what is my status wrt spending plan for this week/month/year ? what is my current status wrt time spending goals ? ** money where have I been spending my money ? what is my status wrt spending plan for this week/month/year ? what is my current status wrt spending/savings goals ? what are all my current balances ? what does my balance history look like ? what does my balance future look like ? are there any cashflow, tax, budgetary problems looming ? ** charts [1:27pm] I have decided I am not getting enough visible day-to-day value out of my ledger, I need more of that to stay motivated [1:27pm] What do you think will help in that? [1:27pm] I think some simple self-updating charts, or even good reports in a visible place [1:28pm] something I don't have to spend an hour fiddling with to get answers [1:38pm] Nafai: identifying/designing some useful reports/charts seems to be blocking me [1:39pm] there are probably some standard ones I should use [1:40pm] a graph of daily net worth is probably one of the simplest [1:58pm] what else.. a chart of weekly expenses in key categories [1:58pm] ditto, monthly [1:58pm] a chart of monthly income [1:59pm] those three should help me be more clear about cashflow status [2:00pm] also I'd like something that shows me how much I am on top of financial tracking - how current my numbers are, when last reconciled etc - at a glance [2:01pm] another simple one: current balances in all accounts [2:01pm] those would be a great start [2:04pm] daily net worth, weekly expense, monthly expense, monthly income, confidence/currentness report, and balance report [2:05pm] let's see, which of those 6 would give most payoff right now [2:05pm] probably 5 [2:06pm] how could I measure that ? [2:06pm] number of days since last ledger entry.. [2:06pm] number of ledger entries in last 30 days (compared to average) [2:07pm] number of days since last cleared checking entry (indicating an online reconcile) [2:08pm] those would be a good start. How do I make those visual [2:09pm] well I guess the first step is a script to print them * misc ** compare other languages! a parser generator and decent speed is required *** python: http://cheeseshop.python.org/pypi/ZestyParser, pysec, pyparsing *** squeak: LanguageGame, T-Gen, SmaCC *** lisp: ? *** ruby: too slow (?) ** data representation *** http://www.python.org/dev/peps/pep-0327/ *** http://www.n-heptane.com/nhlab/repos/Decimal/ *** http://www.n-heptane.com/nhlab/repos/Decimal/Money.hs *** http://www2.hursley.ibm.com/decimal/ *** import hierarchy "Parse" "TimeLog" "Ledger" "Account" "Transaction" "RawLedger" "LedgerEntry" "RawTransaction" "AccountName" "Amount" "Currency" "Types" "Utils"