docs: notes

This commit is contained in:
Simon Michael 2010-11-15 14:54:07 +00:00
parent cc2e5419f2
commit bf1fe0a282

151
NOTES
View File

@ -14,16 +14,18 @@ clever tricks like the plague." --Edsger Dijkstra
little old Scottish ladies cried out to me 'LIVE DANGEROUSLY, SON! LIVE
DANGEROUSLY'" --kowey
ALL THAT'S NEEDED IS THE DESIRE TO BE HEARD. THE WILL TO LEARN. AND THE
ABILITY TO SEE. --Scott McCloud, Understanding Comics
* principles
*** we aim to make reliable, maintainable, usable, useful software, sustainably.
*** docs before packaging before tests before fixes before refactoring before features
*** "bugs" are errors, as in the programmers messed up
*** automate
*** measure
*** test continuously, test everything
*** less is more
*** code review/pair programming
** we aim to make reliable, maintainable, usable, useful software, sustainably.
** docs before packaging before tests before fixes before refactoring before features
** "bugs" are errors, as in the programmers messed up
** automate
** measure
** test continuously, test everything
** less is more
** code review/pair programming
* todo/backlog
@ -394,9 +396,19 @@ competitors/fellow niche inhabitants
**** usability
**** download & usage stats
** errors
*** balance: --depth with --flat should show aggregate balances
*** register: intervals with unspecified from should start from first txn not first matched txn ?
*** convert: rules file can't have blank lines after last data
*** parsing: recursive file includes cause a hang
*** parsing: extra noise with eg bad date parse errors
$ cat t.journal
200/1/99 x
a 1
b
$ ./hledger.hs -f t.journal print
hledger.hs: could not parse journal data in t.journal
"t.journal" (line 1, column 9):
unexpected " " <- undesired
expecting digit <- noise
bad year number: 200
*** parsing: period expressions should allow interval at the end
*** parsing: canonicalise account names to be case-insensitive
*** parsing: only journals can include, and only another journal
@ -413,6 +425,9 @@ While parsing transaction:
> 2/27=2/29 (20100201ucla) ucla payment
Error: Day of month is not valid for year
*** balance: --depth with --flat should show aggregate balances
*** register: intervals with unspecified from should start from first txn not first matched txn ?
*** convert: rules file can't have blank lines after last data
*** web: doesn't support multiple filter patterns
*** web: accounts final balance can be -0, colored red
*** web: post handlers should preserve a p
@ -422,6 +437,11 @@ hledger web --port 5001 --base-url http://localhost:5001/ -f ~/personal/househol
*** web: loses -B after an edit, and/or a filesystem edit
*** docs: need to be less wall-of-text
*** docs:installing:describe three install options in one place
*** windows: can't print non-ascii
http://code.google.com/p/hledger/issues/detail?id=25
http://blog.andrewbeacock.com/2008/12/rxvt-better-console-for-cygwin-unix-on.html
http://www.burningcutlery.com/derek/winsetup/
http://msdn.microsoft.com/en-us/library/ms714415(v=VS.85).aspx
*** LEDGER vs LEDGER_FILE
*** clarify data modifying story
**** auto-create of empty files annoying ?
@ -450,6 +470,41 @@ hledger web --port 5001 --base-url http://localhost:5001/ -f ~/personal/househol
*** inspiration
http://community.haskell.org/~ndm/downloads/paper-hoogle_overview-19_nov_2008.pdf -> Design Guidelines
** features
*** show add form after adding
*** : completes one account name component
*** auto-complete from substrings, not just prefixes
*** auto-complete accounts & amount as well as description
*** use current year as default when no year specified
*** use journal from stdin when provided ?
*** allow price record for null commodity, eg with quotes
P 2009/1/1 "" 0.5h
and why doesn't this work ? time.journal:
P 2010/9/27 h 1
$ hledger -f time.journal bal -p aug -B
1
17.75h work:jobs
1
17.50h clearview
1 60 clear glass thermal data
0.25h admin:cheque issue
12.75h backups/hosting
2.00h cleanup
1.00h move plan
2.25h move prep
4.00h testing
3.50h speed
1.50h barbara spellcheck issue
0.50h installation report dates
0.25h plan change issue
1.00h planning/discussion
0.50h speed issue
0.25h tina quote low-e layout
0.50h tina title 24 issue
0.25h kcrw:admin:contract update:unbilled
--------------------
1
17.75h
*** register --wide and/or --format ...
*** --related
*** Double -> Decimal
@ -679,6 +734,46 @@ Or to see how your expenses will add up:
ledger --forecast 'd<[2012]' register '^expenses'
*** essential/getting started info
I've never used financial management software before, I'm just confused at what I'm doing.
http://en.wikipedia.org/wiki/Double-entry_bookkeeping_system
money isn't created or destroyed, it moves between accounts
all possible accounts are organised under five categories: assets, liabilities, equity, income, expenses
the gist of it for *ledger users is that each transaction in your journal (file) is balanced, ie its postings add up to zero
typically you have a posting to some account (expenses:food $10) and an equal posting from another (assets:cash $-10)
so should things like income be a forever-decreasing value?
yes
I think traditional bookkeeping uses "debit" and "credit" for (among other things) hiding the negative sign
I wonder, if folks had been comfortable with negative numbers in the middle ages, if debit/credit would have been invented
so, when I start a ledger file and I start my initial account balances for, say, checking, I withdraw them from equity or income? Or does it matter in this case?
traditionally, you transfer opening balances from equity
and this is just a convention, or is there some better reason behind it?
I believe it's actually based on the real-world meaning, and makes sense if you study enough bookkeeping
I thought equity was more a share of something owned.
that's right, and if you squint enough the two uses are equivalent
So I'd do something like "assets:checking $foo \ assets:savings $bar \ liabilities:creditcard $-baz \ equity:opening balance"?
yes
what about loans? Those are liabilities, right?
yes
okay. So after I set up my initial account balances, it's just a matter of keeping track how and what I spend.
yup, tracking your checking account's or your wallet's inflows and outflows is a good way to start
Gradually you'll add more tricky things like invoices and short-term loans (accounts receivable/payable)
I also read in the manual that you can set up routine actions, like debiting from one account and crediting to another on a monthly basis.
this can help me set up budgets, right?
yes, ledger lets you specify those with special modifier/periodic transactions. They appear in reports but not in your journal file. Or you can use cron or something to actually add them to the journal
and there's also a budget report feature
a catalog of standard bookkeeping entries for typical real-world transactions is really helpful and worth searching for
** software
*** http://gnucash.org
*** http://www.xtuple.com/postbooks
@ -726,6 +821,40 @@ http://www.mscs.dal.ca/~selinger/accounting/tutorial.html#1.2
** code snippets
fromOfxTransaction :: StatementTransaction -> LedgerTransaction
fromOfxTransaction StatementTransaction {
stType = _ --sttype -- :: TransactionType
,stDatePosted = stdateposted -- :: Maybe UTCTime
,stAmount = stamount -- :: Decimal
,stCheckNumber = stchecknumber -- :: Maybe Int
,stFITID = _ --stfitid -- :: String
,stSIC = _ --stsic -- :: Maybe String
,stName = stname -- :: String
} =
LedgerTransaction {
ltdate = date -- :: Day,
,ltstatus = stat -- :: Bool,
,ltcode = code -- :: String,
,ltdescription = desc -- :: String,
,ltcomment = com -- :: String,
,ltpostings = ps -- :: [Posting],
,ltpreceding_comment_lines = prec -- :: String
}
where
date = maybe (error "found an undated bank transaction, giving up") utctDay stdateposted
stat = False
code = maybe "" show stchecknumber
desc = stname
com = ""
ps = [
Posting False "UNKNOWN" a "" RegularPosting,
Posting False "CHECKING" (-a) "" RegularPosting
]
prec = ""
a = Mixed [dollars $ fromDecimal stamount]
fromDecimal d = fromIntegral (decimalMantissa d) / (10 ^ decimalPlaces d)
Name: test
Version: 0.1
Synopsis: test package for linking against internal libraries