September 2019 Archives
Fri 20 Sep 2019 05:25:22 PM UTC
Accounting with GnuCash - Basics
About 6 months back, I felt the need to maintain my expenses and to be able to analyze them at a later point of time. Before that I had used couple of Android apps like Money Lover Majority of money management apps have this workflow:
- Create categories (and possibly sub-categories, etc.) where you want to track your spendings are going
- When you spend money, add the amount spend under the category it belongs
- The app will show you statistics and charts based on your recorded spendings
GnuCash works on a different methodology called "Double-entry bookkeeping". It means that for you to add an entry as "spending" into one of the category you defined, another entry must be added into the category where the money "came from". This is a simple but very powerful concept that adds more accountability to the process of accounting (pun intended)! Rather than me trying to explain the whole thing, Chapter 2.1 - Accounting Concepts in GnuCash concepts guide explains it very well.
Result of this framework put in place is that you don't end up just defining the categories or bins where your money is going, but you also end up defining your money sources. In language of GnuCash, all these entities that hold money are 'accounts'. You can define an account where your salary gets credited, another where you "deposit" the money spent on movies etc. For GnuCash, everything is just X amount transferring from account A to account B.
Do I have to add an entry in each of the account involved in a transaction to work with this double-entry bookkeeping stuff?
No, GnuCash is smart in that aspect. Once you add an entry, for example in your bank account about an amount being transferred to your coffee expense account, GnuCash automatically adds another entry into coffee expense account about the same amount getting transferred from your bank account.
But if everything is an account, how does GnuCash know which one is meant for income and which one for expense?
GnuCash tells you to categorize every account you create into one of the five categories:
- Asset: These accounts represent the wealth you have. Asset can be anything from the money in your bank account to your house, car and so on.
- Liability: These accounts represent the amount you owe to others. This can be your credit cards/loans etc.
- Income: These represent your income sources. It may be your salary, profit from business, interest on bank balances and other like these.
- Expense: These represent the various expenses you are making. The extent of details and tracking depends on how much you wish to audit. For example - you can choose to ignore the tax deductions on your salary and just put an income entry of the amount that you get in your bank account or you can choose to consider your salary before deductions as your income, put tax deductions under 'tax' expense account and then put the amount you received in bank account as your asset.
- Equity: These represent the curent valuation by subtracting your liabilities from your assets. Accounts in this category are primarily used for recording the initial/opening balances when you start to track something new on GnuCash.
It follows what is called as the accounting equation that should always be balanced for GnuCash to be happy.
Assets - Liability = Equity + (Income - Expense)
Here's how you can quickly start with GnuCash -
- You can start with a fresh GnuCash file and setup your accounts as per above categories. You can also create a hierarchy like Expenses -> Tax -> Income Tax and so on.
- Start small. If you are only tracking your bank account and payments made from that, put your current bank account balance as a transfer from Equity -> Initial balance to your account. Equity type of accounts are primarily used for such kinds of initial balance adjustments.
- Whenever you spend money, make sure to add a corresponding entry in GnuCash. As I said, even if double-entry in place, you only have to enter it in either of your accounts involved in a transaction and GnuCash will make sure to add the complementary entry in other account.
Sat 14 Sep 2019 03:46:36 PM UTC
Why I moved from Ghost to NanoBlogger
I am in process of setting up a web presence independent of giant Internet-based service providers like Google. This website is running on a Nanode that runs a web server and a mail server. (I use arch, BTW).
When I configured Ghost blog, I also needed to configure MySQL instance. While Ghost is a powerful blogging platform, it runs on Node. Following are the RAM usages for the two processes that together consume ~20% of RAM resources.
Server's status
Process status
Stopping these two services effectively brings down my RAM usage to ~100MBs.
I liked the lack of exernal dependencies of NanoBlogger. The only dependency it takes is on bash and few other common *nix utilities. Everything like blog posts is stored in files. (Everything is a file, remember?) It's easy to find and edit existing posts, you also write HTML for them by hand.. Blog can be updated anywhere via SSH. (That's the only way I have set up currently. It is possible via FTP too.) After using clunky remote desktop tools, I have really come to love SSH! And honestly, I hadn't expected a blog management system to be available in pure bash!
As I continue using it and use different features of NanoBlogger, I will talk about them from time to time!
Sat 14 Sep 2019 02:20:36 PM UTC
Hello world!
Sat 14 Sep 2019 01:49:38 PM UTC
Welcome to NanoBlogger 3.4.2!
Welcome to NanoBlogger, a small weblog engine for the UNIX command line.
Quick Reference
- create new weblog (directory) ...
nb -b <blog_dir> add weblog
- create new article ...
nb add article
- create new entry (w/o tag) ...
nb add entry
- create new tag ...
nb add tag
- tag new entry ...
nb --tag [tag_id] add entry
- list entries ...
nb list <query>
- list tags ...
nb list tags
- list entries by tag ...
nb list tag [tag_id]
- edit entry ...
nb edit entry [entry_id]
- tag entry ...
nb --tag [tag_id] tag-entry [entry_id]
- untag entry ...
nb --tag [tag_id] delete entry [entry_id]
- delete tag ...
nb delete tag [tag_id]
- delete entry ...
nb delete entry [entry_id]
- draft entry or article ...
nb draft [draft_file]
- import draft as entry ...
nb import entry [draft_file]
- import draft as article ...
nb import article [draft_file]
- update weblog ...
nb update <all|DATE|main|max|articles|feeds>
<query>
may equal all,tag,DATE or max
(defaults to all)
Thank you for choosing NanoBlogger. Please direct comments and suggestions to the mailing list or submit a bug report to the project page over at sourceforge.net.