My OS X Programming Blog
Mac OS X Cocoa and CoreMIDI Programming
About Andrew Choi


MIDI Programs

MIDI File Player (External Device)

MIDI Destination Pop-Up Button

MIDI File Player (Internal Synth)

MusicSequence Sample Code

MIDI File Writer

MIDI Name Document Parser

NameConfigSetup

Fish Creek MIDI Framework

MidnamUtility

SysExSenderX

Other Programs

FCBlogEditor

FCBlog and Patch

Chinese Checkers Program

jyut6 ping3 Cantonese Input Method

Cocoa Sample Programs

Syntax Coloring Using Flex

NSTextField and Undo

NSToolbar

Implementing File Import

Launch Application and Open URL

Saving Uncommitted Text Field Edits

Algorithms

Jazz Chord Analysis as Optimization

Optimal Line Breaking for Music

Optimal Chord Spacing

   

A blog where I will write mostly about programming in Cocoa and CoreMIDI, and experiences from my ports of Emacs and XEmacs to the Mac OS.

Dated License Code
Friday January 9, 2004

Someone (apparently) from Apple posted on the coreaudio-api mailing list yesterday that GarageBand hosts AudioUnit instruments and effects. That’s very good news indeed.

I’ve been reading some of the readers’ feedback of Ambrosia’s dated license code article. Much of what is said about piracy and shareware registration have been said before elsewhere and came as no surprise. I also read a Slashdot story on people’s willingness to pay for shareware. An obvious conclusion that one should draw from these is some form of license code/registration/authorization is absolutely necessary for shareware to be profitable.

So I spent a little time looking at mechanisms to support license code/registration/authorization. I read an article and another article about prevention of software from being cracked. These aren’t really useful because they mainly describe ad hoc and “security through obscurity” methods. I then read Kagi’s Activation Code Generator specs and examined their reference implementation. A rather simple (i.e. insecure) algorithm was used. So is the one used in a Cocoa Dev Central article.

One way of implementing license code is to sign a plain text containing the customer name (plus optionally other information) using a private key. The signature is then used as the license code. The application is allowed to run if the signature can be verified using the corresponding public key. If the plain text includes machine specific information (e.g. a machine serial number), then the application can only run on that machine (this corresponds to a challenge-response scheme). The plain text can also include the registration date which can be verified and used in a dated license code scheme. I don’ t think I’ll go that far with my distribution. The next step is to work out a test implementation for this.

Building GIMP-2.0 Preview 1 on Mac OS X
Thursday January 8, 2004

The first preview release of GIMP-2.0 was announced yesterday. GIMP-2.0 is basically a newer version of GIMP-1.3, so the instructions I posted a while earlier for building the latter will work, with the following modifications when you build GIMP.

  1. GIMP-2.0 requires the Perl module XML::Parser to build. One way of installing that module is to invoke perl -MCPAN -e shell and type install XML::Parser. For more information, see the man page for CPAN.
  2. The make files generated by ./configure is now correct so you no longer need to edit the line containing SYMPREFIX in app/Makefile.
  3. Note that the binary installed by GIMP-2.0pre1 is still called gimp-1.3.

On Writing Shareware
Wednesday January 7, 2004

I placed an order for iLife ’04 today, which, fortunately, should be shipped in Canada also on January 16. Besides wanting to play with GarageBand, I will also get the latest version of iDVD. My iMac has a SuperDrive, but the iDVD that came with it was version 1.0. The two-hour recording time on each DVD-R sounds great!

I’ve been thinking about writing shareware. So I’ve spent a little time today to look for and read a few articles on writing shareware.

From time to time, articles on news and discussion sites discuss the profitability of writing shareware, such as ones on MacSlash, Slashdot, and another one on Slashdot. These articles have limited usefulness because it is generally quite difficult to determine the credibility of people who might just be expressing their opinions (instead of describing actual facts, for example)! They do provide a few useful links to interesting webpages though.

I then read a three-part article at O’Reilly’s Mac DevCenter. The author has apparently written a few Mac shareware programs, none of which I have heard of before. Part three of the article was interesting because it compared the payment processing providers Kagi, DigiBuy, and eSellerate.

Much of the content of Peter Lewis’ Shareware Authoring, Rick Holzgrafe’s Successful Shareware, and Steve Pavlina’s Shareware Amateurs vs. Shareware Professionals is common sense. But these articles do provide good comprehensive summaries of all the things that one must consider when going into the shareware business.

Interestingly, there’s an association for shareware authors.

Colin Messitt’s article “Why do people register, does crippling work, does anybody really know?” is interesting because it demonstrates the necessity of crippleware experimentally.

Ambrosia’s fprefect’s article “Bitwise Operator: The Plain Truth About Piracy” is interesting because it gives an idea of the great number of people who will actually attempt to use license codes pirated from the Internet, and Ambrosia’s use of dated license codes to force users to re-register.

Some authors of these articles spend too much time trying to qualify what “good” software is. Needless to say, successful shareware will most likely have to be good software. Well, at least that part of it I believe I have a good handle on :-).

GarageBand!!
Tuesday January 6, 2004

If you’re interested in digital audio on OS X, by this time today you must have heard about GarageBand, the new component of the new iLife. It’s a digital recording studio, software instruments, sequencer, loop library, guitar signal processor all wrapped into one application. I watched the live webcast of MWSF this morning, and quite frankly the rest of Jobs’ presentation was quite uninteresting.

And it is an amazing deal as part of the $49 iLife suite! Of course by reading its specs, it’s hard to tell whether it can work with third-party audio units, whether it can control external MIDI devices from its sequencer, whether it can import/export MIDI files, and so on. Probably not. But I suppose we’ll just have to wait to read some of the reports.

I’ve been thinking about writing a small MIDI application on OS X to test the shareware market, just to see if that is something worth doing. Apple’s announcement of GarageBand today will probably put a few shareware authors out of business. Of course that just means one must choose an application area that is a little further away from the mainstream. I won’t be discussing my application in this blog before it is ready for release. I’ll however continue to work on the (artistic licensed) FCM framework and I hope to enhance it and post new versions of it and write about it from time to time.

Science Fiction Series
Monday January 5, 2004

If you have plenty of time, you don’t just read science fiction novels; you seek out good science fiction series! I have just finished Brian Herbert and Kevin Anderson’s Butlerian Jihad. I think the story is more captivating than their Prelude to Dune trilogy: House Atreides, House Harkonnen, and House Corrino. But I still liked the trilogy.

Of course they cannot compare with Frank Herbert’s Dune series: Dune, Dune Messiah, Children of Dune, God Emperor of Dune, Heretics of Dune, and Chapter House Dune, my all time favorite series.

Any of Frank Herbert’s books is a good read! If you are into series, try the trilogy he wrote with Bill Ransom: the Jesus Incident, the Ascension Factor, and the Lazarus Effect.

In completely different style, William Gibson’s Neuromancer is also one of my favorite books. For more cyberpunk, try Virtual Light, Idoru, and All Tomorrow’s Parties. Not exactly a trilogy, but with recurring characters.

For a bit of humor, there is of course Douglas Adam’s “trilogy”: the Hitchhiker’s Guide to the Galaxy; the Restaurant at the End of the Universe; Life, the Universe and Everything; So Long, and Thanks for all the Fish; and Almost Harmless. They’re a lot better than the old TV series.

For something delightfully weird, try Larry Niven’s Ringworld, the Ringworld Engineers, and the Ringworld Throne. The concept of rishathra is rather intriguing.

For something easy to read, try Orson Scott Card’s Ender’s Game, Speaker for the Dead, Xenicode, Children of the Mind, and whatever came out after that.

For some classic science fiction, try Isaac Asimov’s Foundation series or Arthur C. Clarke’s Rama series.

On another note, just fixed another bug in FCBlog, which showed up because of the new year. Here’s the patch.

January 2004
Sun Mon Tue Wed Thu Fri Sat
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Dec  Feb

xml

Search this blog with


Lists

Less-Known Facts About Emacs

Emacs Rants

Chinese Restaurants in Calgary

Calgary/Banff Tourist Attractions

C++ Reading List

Science Fiction Series

Top-10 Reason I Stopped Working on Emacs

Top-10 Types of Questions I Get About Emacs

10 Defining Moments as Programmer


Misc

Carbon XEmacs

Emacs for Mac OS X


Copyright © 2003, 2004, 2005 Andrew Choi (Contact Information). Created with FCBlog