Buy Now |
Online Discussions |
Mac OS X |
Mac OS X resources:
iCredit is a Cocoa app (for OS X 10.5 or greater!) designed to help small businesses extend credit or create debit accounts for customers. The model works like this: Your Lemonade Stand* allows frequent customers to pre-pay an arbitrary amount of money to an account. Then, anyone authorized to spend from that account can pay for purchases. All transactions and changes to the underlying accounts are audited, as employees must enter their passcode (the employee's initials concatenated with their password). This helps discourage abuse by unscrupulous or mischievous employees. Hope you find this helpful. If so, please e-mail me!
This is an MIT Public License release (Read the MIT License).
*The program was actually written for the concession stand at a local swimming pool. The theory is that kids shouldn't be carrying cash with them because it's too easy for them to lose track of it while they're playing. The pool issues photo IDs with a unique patron ID. Parents would open an account and authorize their children to spend on this account. The employees (often local teens) would enter the ID number from the badge to find the patron, verify the name matches the ID, then enter the transaction amount, thus debiting the account. In the event that a transaction would exceed the remaining account funds, the program warns the user but ultimately will allow credit to be extended, if the decision is made to proceed. The goal is to encourage spending by removing the need to carry cash while also helping to guard against register theft by reducing the total amount of cash on hand. The data file is NOT particularly secure, as its not encrypted, but this is meant to help small business, not provide enterprise-level security.
(Minor bug fixes posted on January 06, 2010. Sorry for any inconvenience.)
Download the iCredit source code (180k).
Download the iCredit executable file (900k).
Billing Project v1.4 is an open source application that helps you keep track of time that you spend working on various projects for the purposes of generating an itemized bill. Multiple clients can be tracked at once. The program is written using Cocoa bindings and CoreData objects, with a moderate amount of commenting in the source code. The program will generate a client-specific bill as a plain-text file which can then be imported into your favorite word processor template. This is an MIT Public License release (Read the MIT License). Enjoy!
Updates to v1.4.1
February 25, 2009
- Fixed a bug in the calculation of individual billable events so that they are consistent with calculations of lifetime billing.
- Improved bill generation to use the localized monetary format. Thanks to Bennie Kahler-Venter for finding and squashing this one.
Updates to v1.4
July 26, 2008
(More versioning info below....)
- Interface expanded to include new functions and data such as lifetime summaries for each client.
- PAID checkbox now part of the tableView for each item. Paid items can be shown/hidden with a convenient button rather than requiring a trip to the preferences panel.
- More bugs squashed. Several version have elapsed so I've made and fixed several problems....
Download the Billing Project source code.
Download the Billing Project executable file.
Instructions for updating the OS on a Garmin Nuvi 350 using Mac OS X. Garmin says you need to wait for them to develop Mac compatible software. I say, that's awfully inconsiderate since I spent some serious cash on this very nice GPS device. Here's a step-by-step guide to bringing your Nuvi up to speed!
iBlock is a Cocoa app (constructed with XCode v1.2) that can watch for a serial device that is plugged into the Mac (in my case, via a Keyspan serial to USB converter), and trigger QuickTime movies to play and stop playing based on the serial data. The movies can also be trigger by keyboard-entered "hot keys." Right now, the program is configured to discriminate between 8 different movie triggers and two play states (play and pause), which are signalled by a 2-digit code sent through the serial connection. The first digit (1-8) determines the movie, and the second (0 or 1) determines the play state (0 is playing, 1 is paused). The code is fairly well commented and is shared with you under the MIT Open Source License agreement (Read the MIT License). (This is currently used to teach anesthesia techniques - We attach a life-sized model to the serial A-D converter, and when a conductive needle is inserted into the model and contacts a conductive structure inside (modeling the nerves of the upper arm), one of the movies is triggered to show what you'd see in a human.) Good luck!
Download the iBlock.zip source code.
iCall is a Cocoa app (constructed with XCode v1.2) that was originally designed to create call schedules for our department. It takes the 2 letter initials as input into the NSTableView and replaces them with the person's full last name. It obeys different scheduling rules for weekends and holidays, and it automatically moves the first call person to the third call slot 2 days later. It provides a second tabbed page for other information, and it prints both tabs on one 8 1/2 x 11 inch page using a non-displayed window specifically to arrange the printed material. There are a few other functions as well, such as tabulating the number of calls for each person during a calendar year. The program uses NSDocument functions, NSDictionary calls, and other simple data management tools. As usual, it's shared with you under the Gnu Public License agreement (Read the GPL). Check the file AAOMDocs.plist in this .sit file to see the 2-letter abbreviations that you can use in the program.
Download the iCall.sit source code.
Additional versioning information for BillingProject:
Updates to v1.1.1, v1.1.2, v1.1.3, and v1.1.4
Feburary 17, 2008
- Version 1.1.4 resolved an issue involving adding, editing, or deleting calendars when other calendars existed, but were not editable. The program now checks the isEditable flag for each calendar before attempting to perform any actions within BillingProject's menu list.
- Version 1.1.3 resolved an issue where an isolated edit of the Notes field would not allow the change to be saved to disc. I needed to force another commitEditing here because the managedObjectContext didn't yet know that the NSTextView had uncommitted changes.
- Version 1.1.3 also fixed a crash after the user closed the final window. This had to do with the window's delegate outlet being assigned to the file's owner rather than to the proper delegate object.
- Version 1.1.2 changed the way that the calendar update notifications are handled. I think it makes it more robust, allowing the program to respond to all possible editable calendar situations: No calendars, some calendars, and changes between none and some. Also fixed a few minor bugs in the handling of these situations.
- Version 1.1.1 fixes a bug that allowed you to (try) to write a new calendar event to a calendar that was read-only, such as a subscribed calendar. This oddly caused the program to crash rather than simply post a notice that something was amiss. In any event, the CalCalendar class provides a simple way to check for edit-able-ness, if you will.
Download the Billing Project v1.4 executable file. Minimum OS X 10.5 (Leopard) Required
Download the Billing Project v1.4 source code. Minimum OS X 10.5 (Leopard) Required
Updates to v1.1
January 20, 2008
- Version 1.1 now employs CalendarStore framework features to allow you to add new events directly to any iCal you like. The start and end times in the new ical event correspond to the BillingProject times. If you're into programming, I think the code that handles the CalCalendarStore notifications is instructive.
- AS A RESULT OF THE CALENDARSTORE FRAMEWORK, VERSON 1.1 ONLY RUNS IN MAC OS X 10.5 OR HIGHER. Continue to use Version 1.0.5 (below the v1.0.4 notes) if you have any OS predating 10.5. I have no idea what will happen if you try to run this version on a 10.4 machine.
Updates to v1.0.5
January 17, 2008:
- Fixed a bug (thanks to MMALC and Cocoa-Dev mailing list) that resulted in data loss if the user saves an unmodified file. This bug seems to be a part of CoreData, which hopefully will be rectified in the framework at some point. In the interim, for you programmers using CoreData in PersistentDocuments, beware this bug and code around it.
- Fixed another bug that prevented UNDO from working if the user clicked on the Notes field of an Event immediately after opening a document. Now, undo works pretty much as expected.
- Fixed a bug in processing of fetch requests after Notes data had been changed. Now, after the user is done editing Notes text (as measured by the posting of the NSTextDidEndEditingNotification), the ManagedObjectContext will re-fetch records, allowing the UI to remove records that no longer match search criteria.
Updates to v1.0.4
November 3, 2007:
- Recompiled executable using Leopard's XCode. For some reason, the previous executable was destroying my data files in Leopard. Unsure whether this was a result of some compiler problem, I have recompiled it in (what I believe is again) a universal binary form. It's no longer destroying data files. I've used (as Apple recommends here: http://developer.apple.com/releasenotes/Cocoa/CoreDataReleaseNotes/index.html ) the 10.5 Library to build against, with the deployment target set to 10.4. Please let me know if this works. Also, be SURE to back up your data before you use this in Leopard! (Time Machine saved my data file....)
Updates to v1.0.4
October 3, 2007:
- Finally squashed a bug preventing per-event total from updating properly. Let this be a lesson to pay close attention to what you click on in Interface Builder! It's very easy to think you've clicked on an NSTableView, but actually you've got the enclosing NSScrollView.
- Also moved the code for calculating the per-event total to a separate method so I can call it without parsing the client's entire list of events.
Updates to v1.0.3
August 18, 2007:
- Fixed search predicate formation so it properly searches for entered strings.
- Fixed bug so that changes in start time/date are immediately reflected in event list ordering.
- General improvement in efficiency by removing excess messages.
Updates to v1.0.2
August 17, 2007:
- Fixed an ugly bug making undo act erratically.
- Further improved error handling.
- Found a bug affecting some users upgrading from prior versions. Read the accompanying ReadMe for upgrading users for details.
- Streamlined execution to reduce redundant messages.
Updates to v1.0.1
August 14, 2007:
- Improved error messages again.
- Program now backs up your v1.0 data file before upgrading to v2.0.
- Changed some of the methods in the object MyDocument so that they are more compartmentalized and reusable. The goal was to make the programming more Cocoa-like, but I'm still working on that....
Updates to v1.0
August 9, 2007:
- No longer a beta version!
- Upgraded error messages that may occur. Hopefully, you'll never see any of these, but they might be helpful if you ever do!
Updates to v1.0b
August 4, 2007:
- The code now checks the data version and updates it to dataVersion 2.0 if the user allows. The only real difference is that I have chosen to remove nil values from the data, preferring empty string values @"" instead. This makes formatting the output programmatically easier.
- Fixed a bug that would prevent certain records from showing in the NSTableView for billable events.
- Fixed a bug that caused crashes when any record filtering algorithm was being used including hiding paid records or searching by text.
- Simplified some of the code used for predicate generation, thanks to advice from mmalc crawford.
Update to v0.8b
- Now allows easy importing of client information from AddressBook interface. Uses the AddressBook.framework and the ABPeoplePicker user interface. Client addresses are currently limited to the primary address, as marked in the AddressBook application. I have no plans to change this at this point, but if someone really wanted access to alternate addresses, perhaps that could be arranged.
- The second half of this update is now complete. Users can enter client data into Billing Project and EXPORT the client data to AddressBook. I have NOT fully tested this feature, so use it at your own risk. (That is, consider backing up your address book before you try this.) However, it seems to be working properly at this point.
- The third half of this update is to make the program a tad bit more user-friendly. Now, when the user clicks on the "Add Client" (plus-sign) button, the program opens the client data window and selects the first cell in the data field. It's a minor addition but it was truly sloppy without such behavior.
Update to v0.7a:
- Billable Event's Event Total field now properly includes Additional Expense in its subtotal. This was a coding oversight in the version 0.6b.
Buy Now |
Online Discussions |
Mac OS X |
Ascendiac ISBN 0-9727680-0-9
Ascendiac and this Web site are ©2002 by Iatragraph, LLC. All rights reserved. No portion of this manuscript may be copied, reproduced, or distributed in any form without expressed, written permission. All characters and events are strictly fictitious, and any similarity to actual persons, entities, or events is entirely coincidental.