My new alarm clock utility for the Macintosh is now available on the Mac App Store.
My primary goal for QuickAlarm was to create a quick and simple way of setting reminder alarms on my Mac. I believe that an alarm should consist of: a time, a date, a message, and a tone. So I assembled all of those items into a single dialog where they can be set within seconds.
See QuickAlarm for a complete description.
QuickAlarm was primarily written in MacRuby along with some Objective C routines. MacRuby has come a long way and I believe it is almost ready for most industrial strength applications.
Some of MacRuby's advantages include:
It is Ruby! It has concise syntax unlike Objective-C. I estimate that I reduced my number of lines of code by at least 1/2. Fewer lines of code also means fewer bugs.
It integrates seamlessly with Cocoa. For example:
menuItem = NSMenuItem.alloc.initWithTitle( "Pending Alarms", action:nil, keyEquivalent:"")
It can be compiled using the LLVM compiler to byte code. This is good if you want to obfuscate your code in a commercial application.
Apple will accept a MacRuby app in the Mac App Store. Unfortunately, this still isn't the case in the IOS App Store.
Seamlessly integrates with C++ and Objective C that you include in your project.
MacRuby integrates seamlessly into XCode. Build, run, and submit to the MacApp store all from XCode.
MacRuby is still an interpreted language. If you want maximum performance, you should write your heavy lifting code in C, C++ or Objective C. And leave the UI duties to MacRuby.
The MacRuby framework does not come preinstalled in MacOS 10.6.6. Therefore you can't count on the end user having it installed on their machine thus forcing you to include that framework in your package. And it weighs in at a hefty 50Mbytes. This also requires some tricks that you must perform in XCode to copy the framework into your build process.
I had some problems getting MacRuby to work with BridgeSupport (communication with external programs like iTunes, etc). I ended up writing that code in Objective C.