Managing Your Money with GnuCash
A refrain many Linux users and advocates hear again and again is “The only reason I keep Windows around is for Quicken.” Since 1997, the GnuCash Project (formerly known as xacc) has been working to provide an accounting solution for Linux. GnuCash 1.4, the current stable release, provides a simple, easy-to-use but powerful home accounting system. Development continues at a rapid rate, both through volunteers and employees of Gnumatic (http://www.gnumatic.com/), a company formed to support the continued development, marketing and productization of GnuCash and related projects.
GnuCash is GPL software, so you can download the source code, as well as RPMs, from the GnuCash web site (http://www.gnucash.org/). Several distributions, including Mandrake, SuSE, Debian and Red Hat, also include GnuCash as part of their systems. While GnuCash requires the GNOME libraries, it will run quite happily with any window manager, including KDE. The current stable version is 1.4.9, but that may have changed by the time you read this. Versions 1.5.x are the next development series. These are intended for those who wish to get involved with where GnuCash is going, rather than its use in production environments.
Building GnuCash can be a little problematic for some people as it requires the installation of a couple of uncommon build tools. In addition to a working GNOME development environment, you need Perl, guile, SWIG (available from http://www.swig.org/) and g-wrap, another tool now maintained by Gnumatic and available from the Gnumatic web site. The dependency on SWIG is likely to go away sometime in the next development series (1.5.x). GnuCash uses the standard GNU build environment, so compiling is just a matter of typing ./configure; make; make install.
While GnuCash's primary development environment is Linux on x86, it has been successfully compiled and run under virtually all the architectures Linux supports, as well as FreeBSD/x86 and Solaris/x86. It should also run on just about any platform to which GNOME has been ported.
While many other low-end accounting programs use a “cashbook” single-entry approach to accounting, GnuCash has always used a double-entry accounting system. While slightly more complex, double-entry accounting is a far more accurate accounting technique. You'll find that double-entry is a powerful way of organizing your finances. If you are already familiar with double-entry accounting, you probably can't imagine working any other way. While it's technically possible to use GnuCash for single-entry accounting, you'd be crazy not to take advantage of GnuCash's full abilities.
So, how does double-entry accounting work in GnuCash? Every time you spend, receive or transfer money is a “transaction”. When you write a check to pay your phone bill, that's a transaction. When your paycheck goes into your account—another transaction. When you go to the ATM to get some cash for a night out, that's a transaction. When you buy a burger with that cash...you guessed it, it's a transaction (whether it's practical to account for personal burger purchases is another question). In each case, money is transferred from one place to another, and the amount taken from one place must exactly equal the amount put somewhere else. Money never appears or disappears from thin air.
Similarly, in GnuCash every transaction involves money transferred from one account to another. “Huh? Two accounts?” I hear you saying. “Okay, for a bill payment one of those accounts might be a checking account, but what's the other?” Good question. The answer is that “accounts” can be much more than checking or credit card accounts. For instance, you can create an “expense account” for “Phone Bills”. Therefore, paying a phone bill would involve two entries, one in your checking account, and one in the “Phone Bill” expense account. These amounts must exactly match, something that GnuCash immediately checks. At this point, you might think that making two separate entries is a pain. GnuCash, however, lets you make both entries at the same time. More information on double-entry accounting is available in the GnuCash documentation (on-line at gnucash.org/docs/C/xacc-doubleentry.html).
So, let's create some accounts in GnuCash and record a $100 phone bill payment. Start up GnuCash. If you installed from a binary package there's probably a menu entry somewhere, but if that's not set up just type gnucash at a command-line prompt. You'll see the main window. First, we'll need to create some accounts. One way to do so is to click on the “New” button in the toolbar, which brings up a dialog box for creating accounts.
We'll create an account to represent our checking account. In the dialog box, enter the account's details. Most of the fields are self-explanatory, but there are a few that could use some explanation. The “Account Code” is used to determine the order of display in the main window and has no other effect on the account. If you don't care what order they are displayed in, you can safely leave it blank. “Account Type” is where things start to get interesting. GnuCash has 11 different account types. Our checking account is a “bank” account. Finally, you must select a “parent account”. What's that? All will be revealed later, but for now just select “new top level one too”.
Next, we'll create the “Phone Bill” expense account. Click on the “new” button, and repeat the process. The currency for the new account must be the same as for the bank account (transferring between different currencies is performed using special “currency” accounts). Make sure you set the type of the account as “expense”. You should also select “new top level account” for this account.
If you're going to pay a phone bill, you've already got some money in your bank account. According to the rules of double-entry accounting, that money had to come from somewhere, right? Therefore, we create a special “equity” account. Repeat the process you used to create the previous accounts, but call this one “My Equity” and make it of type “equity”.
Now, enter the initial bank account balance. Open the register for the newly created bank account by double-clicking on the entry in the main window. The register shows all the transactions and a running balance for the current account. At the bottom of each register there is always a blank line to enter new transactions. The column headings display transaction fields: date, number, description, transfer (which account the transaction involves transfer from/to), deposit, withdrawal and balance.
Let's say that your current balance is $1,000.00, and we'd like to record that. The date is already set to today's date, so there's no need to modify that field. Use the tab key or the mouse to move to the next field, the description field, where we type Opening Balance. Next, we select the account where we're transferring money from—the special “My Equity” account. Enter the amount ($1,000.00) into the deposit field, and press enter to record the transaction. A new blank transaction will be created, and the balance will change to record the current account balance.
Finally, enter the phone bill. Enter the appropriate information in each field: check number, description of the transaction and the other account involved in the transaction. The transaction is recorded, the new balance for the account is calculated and a new blank transaction is recorded.
Practical Task Scheduling Deployment
One of the best things about the UNIX environment (aside from being stable and efficient) is the vast array of software tools available to help you do your job. Traditionally, a UNIX tool does only one thing, but does that one thing very well. For example, grep is very easy to use and can search vast amounts of data quickly. The find tool can find a particular file or files based on all kinds of criteria. It's pretty easy to string these tools together to build even more powerful tools, such as a tool that finds all of the .log files in the /home directory and searches each one for a particular entry. This erector-set mentality allows UNIX system administrators to seem to always have the right tool for the job.
Cron traditionally has been considered another such a tool for job scheduling, but is it enough? This webinar considers that very question. The first part builds on a previous Geek Guide, Beyond Cron, and briefly describes how to know when it might be time to consider upgrading your job scheduling infrastructure. The second part presents an actual planning and implementation framework.
Join Linux Journal's Mike Diehl and Pat Cameron of Help Systems.
Free to Linux Journal readers.View Now!
|The Firebird Project's Firebird Relational Database||Jul 29, 2016|
|Stunnel Security for Oracle||Jul 28, 2016|
|SUSE LLC's SUSE Manager||Jul 21, 2016|
|My +1 Sword of Productivity||Jul 20, 2016|
|Non-Linux FOSS: Caffeine!||Jul 19, 2016|
|Murat Yener and Onur Dundar's Expert Android Studio (Wrox)||Jul 18, 2016|
- Stunnel Security for Oracle
- The Firebird Project's Firebird Relational Database
- Murat Yener and Onur Dundar's Expert Android Studio (Wrox)
- SUSE LLC's SUSE Manager
- Managing Linux Using Puppet
- My +1 Sword of Productivity
- Non-Linux FOSS: Caffeine!
- Google's SwiftShader Released
- Doing for User Space What We Did for Kernel Space
- SuperTuxKart 0.9.2 Released
With all the industry talk about the benefits of Linux on Power and all the performance advantages offered by its open architecture, you may be considering a move in that direction. If you are thinking about analytics, big data and cloud computing, you would be right to evaluate Power. The idea of using commodity x86 hardware and replacing it every three years is an outdated cost model. It doesn’t consider the total cost of ownership, and it doesn’t consider the advantage of real processing power, high-availability and multithreading like a demon.
This ebook takes a look at some of the practical applications of the Linux on Power platform and ways you might bring all the performance power of this open architecture to bear for your organization. There are no smoke and mirrors here—just hard, cold, empirical evidence provided by independent sources. I also consider some innovative ways Linux on Power will be used in the future.Get the Guide