#!/usr/bin/perl -w # # Copyright 2000 by Michael Coyle # Released under GPL. # # Call it with: # [an error occurred while processing this directive] # # Get the file name from the browser... $file_name = $ENV{'QUERY_STRING'}; # Open the file... open (EP, $file_name); # Print to the browser... print "Content-Type: text/html \n\n"; # Load the file and keep spitting it out to the browser... while () { chomp; print "$_ "; } # Close the file and go home... close EP #!/usr/bin/perl -w # # Copyright 2000 by Michael Coyle # Released under GPL. # # Call it with: # [an error occurred while processing this directive] # # Get the file name from the browser... $file_name = $ENV{'QUERY_STRING'}; # Open the file... open (EP, $file_name); # Print to the browser... print "Content-Type: text/html \n\n"; # Load the file and keep spitting it out to the browser... while () { chomp; print "$_ "; } # Close the file and go home... close EP

3D
3D Photo Gallery (Part 1)
3D Photo Gallery (Part 2)

Audio
Poor Man's MIDI
Make A Metronome
iPod Tricks (Part 1)
iPod Tricks (Part 2)
iPod Tricks (Part 3)
Laugh Track Machine
Audio Player with Reverb
Shepard Melody
RB Phone Home
Build a Drum Machine

Custom Controls and Windows
Double Click Listbox
Draggable Metal Window
Double Click Canvas
Custom Buttons
Custom Buttons Part II
iTunes-style Listboxes
Custom Controls


General RB
Scrolling Windows
Using Mesage Dialogs
Case-Sensitive Word Finder
Introduction to Stacks
Wiggle Window
JPEG in PDF
Listbox Checkboxes
Background Applications
Listbox Auto-Find
Virtual Volumes
Time Tracker
Software Distribution (Part 1)
Software Distribution (Part 2)
Software Distribution (Part 3)
Software Distribution (Part 4)
Exceptions
Tips and Tricks
Text Clippings Made Easy

Graphics
Drawing a Simple Gradient
The SpriteSurface: Space Game
Image Spinner
Cropping Graphics (Part 1)
Cropping Graphics (Part 2)
Cropping Graphics (Part 3)
Cropping Graphics (Part 4)
Shimmer Graphics
Lissajous Figures
Simple Screen Capture
Vector Graphics
Kaleidoscope Images
Stegonography
Spirals!
Image Table
RB Magnifying Lens
Screen Capture
Color Picker Tutorial

Hacks
Ghost Grab
Speedy Mouse Extension
iTunes Plugins
iTunes Skinner

Mac OS X
Global Hot Key Event (Carbon Events)
Login Welcomer (Carbon Events)
Add/Remove Buttons
Resizable Sheets
Mac OS X Preferences Window
Using Sheets in REALbasic
Build a Bundle (Part 1)
Build a Bundle (Part 2)
Dock Your Passwords
Mac OS X Debugging
REALbasic Mac OS X Icon Tutorial
Animate Your Dock
RB and the Command Line

Menus
Window Menu
Templates Menu
Listbox Menu

Novelty
Guessing Game
Calendar Trivia
Tile Mixer
Zip Code Finder
Happy Valentine's Day
Merlin Simulator (Part 1)
Merlin Simulator (Part 2)
Merlin Simulator (Part 3)
Buzzword Machine
AppleSoft BASIC

Printing
Print to PDF

Registration
Registration Code Validation
Network Registration Codes

Resources
Picture Extractor (Part 1)
Picture Extractor (Part 2)

Serial
Caller ID (Part 1)
Caller ID (Part 2)
Caller ID (Part 3)

Speech
Speech Recognition

Socket Communication
Easy Peer-to-Peer File Sharing
MacPAD Version Checking
Display Web Image In Canvas
HTML IMG Tags
Version Tracking
Even Smarter Instant Messaging
Web Tiler
JavaScript and REALbasic
Stock Ticker (Part I)
Stock Ticker (Part 2)
AIM Mate

XML Manipulation
Simple XML Introduction

Video
Big Brother Video Capture

Note: All articles without a byline were written by Erick Tejkowski. When cleaning the site I removed them because the code differed from page to page, and I have yet to put them back in.

resexc2.gif (20k)




REALbasic for Dummies
by Erick Tejkowski

$19.99 @ Amazon





Files are in Stuffit 6.5 or earlier, or ZIP format.
Download Stuffit Expander

Tell us about a bad link.

Software Distribution Part IV
04-25-02




04-19_money.jpg (2746bytes) Originally I had planned to change topics today, but in the past week something interesting appeared on the REALbasic lists. Jon Daniels posted some information about his experiences selling shareware that's made with REALbasic. The data proved so useful and interesting that we arranged to post his remarks right here for you to read. If ever you've wondered how well you can do selling shareware that you create with REALbasic, this will put your questions to rest.

Introduction

The remainder of this tutorial is a direct quote from Jon's original post. It covers a couple of major topics, including how much you should charge, how to sell, and what kind of results you might expect. Your mileage may vary, but it's good to see that you can pay for a couple years of REALbasic licenses with only a month or two of income from a single shareware app. Thanks to Jon Daniels for providing this information!

Jon Daniel's Post

This is the result of my first shareware (kind of) application. I think many people may find it interesting and/or useful. This type of information is not seen very often as far as i can tell. It would certainly be helpful to me (and others i think) to see this kind of information more often. (hint hint). (I think the REALbasic developer magazine plans to have content like this, perhaps with more focus on the applications themselves, not just the commercial aspects.)

Payments and Pricing

I was originally planning on charging $5.00 for my application (XMonitor). It's not a necessary application which provides a unique function, it's a useful monitoring tool with many functions presented in a unique manner. It shows a message saying its unregistered and quits after a few hours.

After reading up on shareware pricing, piracy, self-promotion, advertising, etc. I decided I would let the user pick their own price. To do this, I used PayPal and later added Kagi support.

With PayPal, the user actually types in the amount they wish to pay (as little as one cent) and PayPal takes ~2% of the profit. This was easily done via the application using an editfield and ShowURL, and on a form at the website. The user does have to signup for a PayPal account, which is free but takes about a minute to fill out the form. PayPal doesn't generate serial numbers, but it sends a confirmation email when i receive a payment. I used a ~150 line tcl script to generate serial numbers and send them to the user's email address automatically. On average, users received their serial number within 10 minutes of their purchase with no interaction required by me.

Kagi was a bit more difficult, I had to create an 'online store' and create about 20 different 'products' which have a price range of $300.00 (global license) to $6.00 (single user license). Kagi has a minimum transaction fee of $2.50, so I felt it was unfair to me and the customer to give kagi 50% of the payment, hence i did not allow it to be bought for less than $6.00. Even at $10.00 Kagi takes ~27% of my profit. Kagi transaction take ~2-6 hours to process so its quite a bit slower than PayPal, but not many users complained. Kagi transactions sometimes fail *after* the transaction goes through, so some people get it for free but it was less than 5% of all the Kagi transactions.

The tcl script also keeps a database of each users email address, serial number, and amount paid. With a very simple html form, a user can have their serial number emailed to them. So, the registration process is completely automated, the user has their serial within 30 minutes of registering, and can retrieve it easily when it's lost. With the database (its merely a text file with three tab delimited columns) it's very easy to track trends, the average amount each person pays, the amount im earning per week, last week, per month, etc.

Piracy

After ~4 months my application has not shown up in Surfers Serials, no registrations have made the rounds through the mac piracy networks, and no cracks have been distributed for it. There's not much point to cracking or using someone else's serial number for software you can buy for a penny.

Advertising

I listed my application on versiontracker.com every non-beta release (there were about 15 up to the current version, 1.5.1). Macupdate.com listed all releases (~30). Listed on Macosxapps.com twice. The application is ONLY for Mac OS X, so there was no OS 9 market. I considered purchasing advertising on versiontracker.com but could not determine it to be worth the cost ($500).

Now what you've been waiting for, the profit ;)

Customers: 375
Days since initial release: 97 days
Average Customer: $8.75
Hourly Profit (3hrs/day): $11.28
Hourly Profit (8hrs/day): $4.23
Daily Profit: $33.85
Monthly Profit: $1015.50
Total Profit: $3283.47

Breakdown by payment amount:
<1s: 4 01%
1s: 44 11%
2s: 15 04%
3s: 3 00%
4s: 2 00%
5s: 131 34%
6s: 4 01%
7s: 4 01%
8s: 7 01%
9s: 2 00%
10s: 95 25%
15s: 20 05%
20s: 17 04%
25s: 14 03%
30s: 4 01%
100: 2 00%

Two people bought site licenses for $100, the maximum single user license price paid was $30 and the minimum was $0.10.

Kagi registrations: ~126
PayPal registrations: ~258

January:
Downloads: 9588
PayPal Registrations: 71
Kagi Registrations: 0
Purchase/Download ratio: 1 in 155 (.6%)

February: Downloads: 6500
PayPal Registrations: 77 (64%)
Kagi Registrations: 44 (36%)
Purchase/Download ratio: 1 in 93 (1%)

March: Downloads: 6300
PayPal Registrations: 70 (63%)
Kagi Registrations: 42 (37%)
Purchase/Download ratio: 1 in 134 (.7%)

April (so far):
Downloads: 4300
PayPal Registrations: 40 (78%)
Kagi Registrations: 11 (22%)
Purchase/Download ratio: 1 in 126 (.8%)

Each released version received ~1500-2000 downloads. Looking at the data, it appears when i did not accept Kagi payments in january, i lost ~35% of my customers who were not interested in using paypal. I think this is a good example that having as many payment methods as possible leads directly to more sales. PayPal is by far the simplest, fastest, easiest, and most profitable method ive found for accepting payments. I am very disappointed in Kagi for many reasons.

Conclusion

Well, that's it for this week. Thanks again to Jon for providing invaluable insight into his shareware experiences. See you next week!






Please support ResExcellence by Visiting our Sponsors. One click makes a difference.


Download REALbasic and create your own software!

#!/usr/bin/perl -w # # Copyright 2000 by Michael Coyle # Released under GPL. # # Call it with: # [an error occurred while processing this directive] # # Get the file name from the browser... $file_name = $ENV{'QUERY_STRING'}; # Open the file... open (EP, $file_name); # Print to the browser... print "Content-Type: text/html \n\n"; # Load the file and keep spitting it out to the browser... while () { chomp; print "$_ "; } # Close the file and go home... close EP #!/usr/bin/perl -w # # Copyright 2000 by Michael Coyle # Released under GPL. # # Call it with: # [an error occurred while processing this directive] # # Get the file name from the browser... $file_name = $ENV{'QUERY_STRING'}; # Open the file... open (EP, $file_name); # Print to the browser... print "Content-Type: text/html \n\n"; # Load the file and keep spitting it out to the browser... while () { chomp; print "$_ "; } # Close the file and go home... close EP