Mac@Work
The
Ultimate
Business Machine


Weblog


Contact
Bernard Teo


About Luca...

Luca is named after Luca Pacioli, a lesser-known Renaissance figure who popularised double-entry book-keeping.

It's written in Objective-C and Cocoa, and can work with a wide range of relational databases.

This downloadable version comes with a bundled SQLite database.





MailServe
(
Leopard or Tiger)

MailServe improves on Postfix Enabler by adding Fetchmail and Virtual Alias Domains support, IPv6 over SSL for POP and IMAP, Real-time BlackLists, alternate port nos for SMTP, mail queue management, and allows a list of Smart Hosts to be stored.


DNS Enabler
(
Leopard or Tiger)

DNS Enabler can set up a fully functional buzzword-compliant Domain Name Server on Mac OS X with just one click. It is able to handle multiple virtual domains, multiple sub-nets, aliases, MX records (including specifying back-up servers on other networks), multi-homing, and creating the right number of reverse pointer and CNAME records - all from one convenient single window.


WebMon
(
Leopard or Tiger)

WebMon helps you set up PHP, WebDAV, and SSL on OS X's built-in web server. For SSL, WebMon helps you generate test certs, as well as the certificate request needed to obtain a live cert. You can also use WebMon to monitor your web server logs remotely via remote login through SSH (the secure shell).


LDAP Enabler
(Leopard only)

Activate and configure the built-in LDAP server on Leopard with just one click. Once enabled, you can use the LDAP server to store contacts information that will show up on any Mac (and iPhone), and keep them all updated from one central point.


Luca - An Accounting System for Mac OS X Users

What is Luca?

Luca is a full-featured, fully-functional, accrual-based accounting system that runs on OS X. It has the ability to handle real-time double-entry postings and multiple currencies, yet we try to make it very easy to use, so that it will require minimal accounting knowledge to operate. It is designed for small and medium-sized enterprises.

Luca's Design Objectives

"The task of the accounting profession, in relation to intangible assets and knowledge-based enterprise, is less about counting than it is about giving an account - telling the story of both tangible and intangible assets in meaningful ways, for both managers and markets." - Accounting for Knowledge Management.

The primary aim of an accounting system should be to help its users understand the financial information better. And we believe there's no finer platform for understanding information design than the Mac.

So we're trying to take advantage of all the wonderful user-interface design technology that is available on a Mac to provide Mac users with an inexpensive, easy-to-use accounting system that has most of the standard accounting features (e.g., double-entry, multi-currency, real-time P&L reporting, the ability to drill down and verify the source of any piece of data), and yet is still recognisably Mac-like in concept and navigation.

We take advantage of multiple windows to allow the user to focus on more-manageable pieces of information at a time, while providing the ability to drill down into the details or bring up related information with just one click. And we take advantage of a Cocoa application's ability to keep all its windows synchronised when you make changes in any piece of data.

Luca also exploits the relational nature of the underlying database to allow the user to analyse the data from any angle – for example, by starting at the Profit and Loss Statement and drilling down to the specific transactions that made up an account, or by starting at a specific transaction (say, an invoice) and looking up all the payment transactions, comparing them against the debtor’s credit history.

Luca has been built on very strong foundations. It has an open architecture, which allows users to choose which database they want to use to store the accounting data. Luca works with the SQLite database, by default, but users can choose to use it with MySQL, Oracle, PostgresSQL, or any number of industry-standard relational databases in the market.

Also, Luca is written in Objective-C and can be used as an embedded database in mission-critical applications, e.g., in CRM (Customer Relationship Management) or insurance systems.

Therefore, the way we've envisaged it, a user can begin to use Luca in a non-critical, entry-level setting. And we're hoping to make the data entry as streamlined as a Personal Financial Management Tool. Then if Luca proves to be useful, the user can look forward to exploiting the built-in scaleability of Luca's double-entry engine to handle the accounting requirements of even a large scale business.

The schedule for Luca's development is to release a beta version and then a production-quality release, both of which we have done, and then to add features like Inventory and Time Billing, etc.

Fast Start

Luca is designed to make it very easy for novice users to establish an accounting system. The Luca application with a demo database can be downloaded here.

There is a Luca Quick Start Guide that will use the Demo Chart of Accounts as an example of how you could go about using Luca. You can go to work immediately by following the examples in the Guide.

The Guide is in two parts. The first part describes one month's worth of accounting data that's already been entered into the system. The second part shows you how you can use Luca to enter the accounting data for the following month, based on a variety of scenarios.

Download Luca Now

Download the Luca Package. Unstuff it and run the application. It will be populated with the demo accounting database.

You can use the Luca Guide from the Luca Help menu to start work immediately.

Hope it proves to be useful.

Release Log

1.0 29th July 2004. This was the Java version.

2.0. 31st August 2005. Re-written in Objective-C. Works with Tiger.

2.0.1 7th September 2005. Made some bug fixes in the Payments screen.

2.0.2 13th September 2005. Luca gets its own icon. This version also improves the prompts when the cancel button is pressed in the Journal entry screens. Some changes were made to prepare for the release of the Statement of Accounts feature in the next version.

2.0.3 11th October 2005. Added the Aging Report and Statement of Accounts to track the Accounts Receivables and Accounts Payables. Also, added a new screen to track the Payment History of Receivables and Payables.

2.0.4 2nd November 2005. Enabled printing for the List of Vouchers and the various Journal Listings. This version has been updated to run on OS X 10.4.3.

2.0.5 8th Dec 2005. Data can now be exported in Comma-Separated-Values or Tab Delimited formats, with the option to include headers and totals. This version also extends the print function to cover more listings, e.g., the Statement of Accounts and Aging Reports.

2.0.6 23rd Dec 2005. This version allows a sub-account to be moved from one header account to another in the Chart of Accounts, by simply 'dragging and dropping' it. All the subordinate accounts and postings associated with those accounts will be automatically moved with it. The QuickStart Guide has more details in the topic "Moving Accounts by the 'Drag-and-Drop' Facility".

2.0.7 11th Jan 2006. This is a minor bug fix release.

2.0.8 12th Jan 2006. First release of a Universal Binary for the Intel-based Macs. Will run on Mac OS X 10.4.4 (both i386 and ppc).

2.0.9 18th Feb 2006. This version will run on Mac OS X 10.4.5 (both i386 and ppc).

2.0.10 22nd Feb 2006. Luca makes sure that an account cannot be deleted from the Chart of Accounts if vouchers have been created against it. In the previous versions, the account cannot be removed even when its vouchers are subsequently deleted. This version is modified to allow an account to be deleted, so long as all vouchers created against it have been deleted.

2.0.11 30th Mar 2006. Fixed a bug that crashes Luca on an Intel Mac when an account record is deleted from the Chart of Accounts.

2.0.12 2nd Apr 2006. The demo database has been updated with transactions for the accounting period of April 2006.

2.0.13 4th Apr 2006. This version will run on Mac OS X 10.4.6.

2.0.14 11th Apr 2006. A bug was introduced in version 2.0.10, allowing an account to be deleted from the Chart of Accounts even if vouchers have been created against it. This bug has now been fixed.

2.0.15 14th Apr 2006. The application would sometimes hang when a sub-account is 'dragged' from one header account to another in the Chart of Accounts. The problem has been fixed in this release.

2.1 7th Jun 2006. This is a revamp of the previous versions.

2.1.1 9th Jun 2006. Improvements made to Payments & Receipts data entry.

2.1.2 3rd July 2006. Updated Luca to work with OS X 10.4.7.

2.2 11th August 2006. Luca 2.2 now works also with MySQL, preferably MySQL 5. You can export the built-in SQLite data to MySQL and back again. Lots of bug fixes, including better handling of single quotes (which is a SQL delimiter character) in data entry fields. And there is, hopefully, better stability. The system now works at least twice as fast as it used to be with the SQLite database, even when loaded with about three years worth of data from a mid-sized company.

2.2.1 14th August 2006. Some user interface bugs were fixed, e.g., when buttons and text don't stick to their corners when windows are resized, and the default financial period don't get saved to preferences when the save-to-defaults button was pressed. Notifications also work better - when something happens in one window, e.g., when a voucher is deleted, the totals showing in the list of vouchers or accounts on all other windows are automatically updated. Also, there is now better mapping and handling of date fields between SQLite and MySQL.

2.2.2 16th August 2006. Fixed the places where numbers need to be rounded to two decimal places before they are compared or before they are stored in the database. Also, better handling of NULL values when they are retrieved from the database so they won't show up as <null> values in fields or tables.

2.3 6th October 2006. Updated it for 10.4.8.

2.3.1 10th October 2006. Added a new French localisation by Joselyne Rochaud and Corentin Cras-Méneur.

2.4 26th October 2006. Added a new PostgreSQL database connectivity option, & some minor bug fixes. Also includes an updated French localisation.

2.5.3 9th March 2007. The main purpose of the 2.5.x releases is to get a version of Luca that will compile and run on Leopard, and henceforth take advantage of Leopard's features. There will be a Luca 3.0 that will be released when Leopard ships. The main bug fixed in the 2.5.3 release is one that has to do with year-end closing, which will now work properly on all three database types.

2.5.4 14th March 2007. Added a batch postings button (see notes in my weblog) for the Periods panel in Luca Preferences. Works with OS X 10.4.9.

2.5.5 16th March 2007. Fixed a bug with displaying the total line when printing and exporting all the Financial Reports, e.g., Trial Balance, Balance Sheet, Statement of Accounts, Aging Reports, etc.

2.5.6 12th June 2007. Prior to this version, the All Vouchers listing cannot be printed or exported. This version fixes a bug with the totals row at the bottom of the listing that was introduced when we started using Cocoa's NSDecimalNumber data type.

2.5.7 26th June 2007. Luca updated to work with Mac OS X 10.4.10.

2.6 30th October 2007. Luca version 2.6 will run on Leopard.

2.6.1 21st November 2007. Luca version 2.6.1 will run on Leopard 10.5.1.

2.6.2 5th February 2008. Fixed a bug when exporting SQLite data to MySQL, for decimal numbers greater than 10,000,000.

2.6.3 12th February 2008. Updated to work with Leopard 10.5.2.

2.6.4 1st April 2008. Fixed a 1-cent rounding error bug with the Cash Disbursement and Cash Receipt vouchers. Also fixed one other error with the formatting of voucher numbers introduced by the use of the latest Xcode 3.1 SDK. Plus fixed some compilation errors introduced by this latest Cocoa SDK (which, on hindsight, introduced a pernicious side-effect of making Luca crash on Tiger machines).

2.6.5 23rd April 2008. The previous 2.6.4 version crashes on Tiger machines when a voucher is deleted. This version fixes it. (But it's increasingly hard to make Luca work on both Tiger & Leopard. Future versions will likely be Leopard-only. This may be the last release that will work also on Tiger). Also 2.6.5 adds a new button to Luca Preferences (see below), that will allow the user to delete all the vouchers in the example demo database at one go.

2.6.6 29th May 2008. Updated to work with Leopard 10.5.3.

2.6.7 3rd July 2008. Updated Luca to work with Leopard 10.5.4.

2.6.8 18th September 2008. Updated Luca to work with Leopard 10.5.5.

Luca Latest Version Notes

All the Preference Settings and Utility windows are now consolidated into one single Luca Preferences window :

Currency display formats and decimal number precision can now be set for individual currencies (e.g., the Japanese yen has no decimal places and you can now set this, as shown below, by setting Max fraction digits to 0) :

Instead of having its own Utility window, you can now check the status of the accounting period (e.g., whether you had closed the accounts for a certain month) in the Periods pane in the Preferences :

Certain accounts play important roles in the accounting system, e.g., you need to have an account to post Foreign Exchange Gain/Loss amounts to, and you need an account to post the year's Retained Earnings to, and you need to set up Checking Accounts that are linked to your bank accounts. This is now made clearer in the following Preference pane, which you can also use to assign a different account to play the selected role instead (if you had not yet made any postings to that special account) :

Finally, some changes have been made to Luca's database structure. You can use the following Preference Pane to export the accounting data in Luca's built-in SQLite database to any MySQL 5.0 or PostgreSQL 8.1 database for which you have database creation rights. And you can use it also to upgrade an older Luca database, if you are already a Luca user :

To update an older MySQL database, re-import it back into LucaDB, the built-in SQLite database, using the second button shown above. And then Export it back into MySQL. That should effect the database change. (But remember to back up the older MySQL database first).

Use the new "Export to PostgreSQL" button to export the Luca database to PostgreSQL. You can access the PostgreSQL database remotely by entering the IP address of the PostgreSQL database machine into the Database URL field.

The "Import into LucaDB from an older LucaDB" button, shown above, is to allow you to re-use an older SQLite-based Luca database, by reading it into LucaDB. Just click on the button and show Luca where that older SQLite database is stored.

Some MySQL and PostgreSQL Notes

I don't yet have time to write a detailed how-to with MySQL or PostgreSQL, as some people had requested. I believe it'll get easier for me to guide people through a MySQL or PostgreSQL set-up when a companion application that I'm doing now, Maven, is done.

But, for now, here are some pointers:

Yes, it will work off a MySQL or PostgreSQL database on another machine.

It needs to be a MySQL5 or a PostgreSQL 8.x database. If you can connect to that server from the command line, that same user account and password and server IP address will work in Luca.

Check the firewall (MySQL needs port 3306 to be open on the server, and PostgreSQL, 5432).

Also make sure that the MySQL or PostgreSQL user account that you're using has been given the rights to access the server from any IP address. (Again, I'll make it easier to do all these using Maven.)

I haven't had time to put in enough error checking to give the user a clue why Luca can't seem to connect to the server. That'll need to be added eventually.

Hope this helps. Will it help if we have a forum/discussion page?

Let me know.


Things To Do

1. Need to improve the speed in which data is imported/exported between SQLite and MySQL or PostgreSQL. Currently still not robust enough to handle, say, three years worth of data.

2. Need to handle the "last one cent" problem better, e.g., when a dollar is split three ways and you put them back again, you get 99 cents. Which account should get the last one cent so that the debits and credits always balance, no matter how often you go back and edit or rollback the data?

3. Will need to add concurrency checking when used in a multi-user environment.

4. Tax handling on line items rather than on the consolidated total.

5. Needs an invoicing module, an inventory module, a payroll module, and a time-billing module? Will work on these next.

Luca is a work-in-progress - for the Mac as The Ultimate Business Machine.
Do keep the suggestions coming.

Download...

Luca.zip

The latest version is 2.6.8, which continues to work on both Tiger & Leopard (but this may be the last release that will work on Tiger).

It's a Universal Binary, and is a fully-functional, full-featured download with no time out.

Luca works with a built-in SQLite database and also with PostgreSQL and MySQL databases. See the Release Notes below on how to export the Luca database to PostgreSQL or MySQL. (Use a companion application, Maven, to study the structure of these databases).

Launch the QuickStart Guide from the Luca Help menu. Please note that I've provided sample data for the year 2006 and month 06, i.e., for the period 200606.

It includes a French localisation by Joselyne Rochaud and Corentin Cras-Méneur.


List of Features...

• Chart of Accounts
• Unlimited levels
• Easily re-ordered thru
(Control-)drag and drop

• Double-entry Accounting
• Real-time Postings
• Real-time P&L Reporting
• Can drill down into details
• Makes it easy to audit

• Tracks Sales, Purchases,
   Receivables, Payables
• Allows partial payment of
   invoices
• Allows off-setting between
   invoices of same account

• Multi-Currency
• Billing, Settlement, & Base
   Currencies can be different
• Calculates Forex Gain/Loss

• Statement of Accounts and
   Aging Analysis can be
   generated at any time and
   for any period
• Can manage Budget against
   Accounts, e.g., expenses
   & rental
• Can set up separate cost
   centres & consolidate them
   for reporting

• Transactions can be entered
   for new month without
   waiting for previous month
   to close
• Accounts for previous month
   can be re-opened and
   balances are auto-updated
   on close


References...

Essentials of Accounting - by Robert N. Anthony - the best guide to learning accounting.

The Accounting Game - Basic Accounting Fresh from the Lemonade Stand


Contact : Bernard Teo