Thursday, August 24, 2006

Upcoming feature requests

I've been asking a lot of people lately whether or not they like the colored icons in the system menu bar. The results have been about 50/50. Half of the people like them, and half would prefer black & white, to match the standard apple scheme. In fact, I even did a poll on MacUpdate, and the results (at the time of this writing) are exactly 50/50. Because of this, I'm offering a new option, in the app's preferences, of the next version to use colored or black & white icons.

Another thing that many people have been asking for, is for me to disable the 'kill alarm' feature. I realize that many people like to continue listening to music after they get up, and as they get ready to leave in the morning. However... the kill alarm feature is a safety feature for those times when you forget to disable an alarm, and it goes off in the morning and you're not there. Even those people who like to listen to music in the morning will need this safety net occasionally. To compromise, I'm allowing the kill alarm duration to be turned all the way up to 90 minutes in the next version. I'm hoping this will be plenty of time to get up and get ready in the morning. If anyone is listening to music for hours on end after they get up, they should probably be listening to iTunes anyway.

I also plan on adding title's to stopwatch windows.

And I've been contacted by people who are working on a Norwegian and Japanese localization. Haven't heard from them in a few days, but I'm hoping to still have these localizations soon.

And one more thing:
The other morning, my alarm went off, and I decided I wanted to sleep in for another hour or so. Not exactly a normal snooze duration, but I proceeded to hit the plus button (to increase the snooze duration) 50 times before I got it to where I wanted it. When I layed back down, I thought to myself - that was overly difficult. So in the next version I'm going to add support for a key modifier. If you hold down option and press the plus/minus buttons it will increase/decrease your snooze duration in increments of 5 minutes.

Let me know what you think. You can post comments to this blog even if you don't have a blogger account.

Friday, August 04, 2006

So many distractions...

I've just released version 2.3.4 of the alarm clock. It's been a while since I've had a lot of time to work on the application, and I apologize for not getting this release out earlier. I've had a lot of distractions lately. The main distraction is the new software project I'm working on. If you like my alarm clock, you're probably going to LOVE this new one.

Saturday, July 15, 2006

Russian Localization

I've just received a Russian localization for the alarm clock! This means that the free alarm clock application for Mac OS X will soon be available in 14 languages! Here's the list (in no particular order):

English
Traditional Chinese
French
German
Bulgarian
Danish
Spanish
Dutch
Italian
Hebrew
Portuguese
Polish
Finnish
Russian (coming soon)

Don't see your language on the list and would like to have it added? Drop me an email (robbiehanson15@gmail.com) and I'll tell you how you can localize the app. It's pretty easy!

Version 2.3.3 released

Version 2.3.3 was recently released. This version adds the Polish and Finnish localizations mentioned earlier. It also has the following fixes and additions:

1. There was previously a problem with disabled alarms becoming out of order in the menu. What would happen is that when an alarm became enabled, it's internal time wasn't being properly updated, and thus it would float to the top of the menu and stay there. Also, disabled one-time alarms wouldn't be deleted until they were enabled. All this should be fixed. It wouldn't have caused any problems with alarms, but it was an annoyance.

2. The alarm window (as you know) switches between the song information and the keyboard information every 10 seconds (similar to iTunes). But I noticed that iTunes resets the display automatically when a new song starts. Well the alarm window wasn't doing this, so I implemented this funtionality. When a new song starts (and you're using a playlist) the alarm window automatically switches back to displaying the song information.

3. I recently had an annoyance with the application that I decided I needed to fix straight away. I had my alarm set with easy wake recently. The alarm went off, and gradually increased the volume until it woke me up. I got up, hit snooze and went back to bed. But then, about a minute later, I received mail and the mail app loudly played my "You've got Mail" sound, which woke me up because the volume was still at the same level as when I hit snooze on the alarm clock. So now, if you're using easy wake, after you hit snooze, the system volume is immediately reset to your starting volume so that random computer noises don't disturb your snooze time.

I often wonder if my competitors are reading this blog...

If so, this is to one of my competitors:
Check out line 90 of MyPMSetter.m - I think you might be missing a corresponding AuthorizationFree call.

Tuesday, July 11, 2006

Polish, Finnish Localizations

I return from vacation and what do I find in my inbox? Two emails from kind souls willing to help with localizations! The Polish localization is complete, and the Finnish one is in progress, and quickly nearing completion!

Friday, June 23, 2006

Vacation

I'll be on vacation in northern Minnesota for the next week. I'll still be coding, but won't have constant access to the internet. So if you email me, or post comments to this blog, I might not be able to immediately respond. Please be patient and I'll do my best to reply to everyone as soon as I can.

Friday, June 16, 2006

Frequent Feature Requests

There are a few feature requests that I often receive, and I find myself always copying and pasting my previous responses. So I figured I would just post them here for everyone to see.

1. Why can't we name alarms, and have the names appear in the menu?

The idea here is to have the NAME of the alarm show up in the menu, as opposed to the time and date(s).
Thus the menu would show, for example, "Sunday Morning Service" instead of "08:00 AM (Sun)".

This was actually part of the original prototype, but was scrapped after version 1.0 based on user feedback. Most users who set alarms, found that if they saw the name of the alarm in the menu, it wasn't satisfying enough. They constantly found themselves clicking on the name to double-check the time before they went to bed. Seeing "Work" just wasn't as gratifying as seeing "7:00 AM"

It also caused major headaches when users needed to occasionally change the alarm. Maybe some days they would want to get to work a little early, so they'd change the alarm time to 6:30. But the next night, they'll glance at the word "Work" and assume it meant 7:00. It's a lot worse if they decided to sleep in a little bit one day! The same applies for pretty much any repeating alarm. People tweak their alarm times all the time. Perhaps somebody wants to go to the early church service one sunday, and the later service the following week. It's much easier just to glance at the alarm time.

After months of using the product, and much user feedback, I ultimately scrapped this ability. Many users may think it would be cool to have this feature, but after using it for a few weeks I'm confident they'd change their minds on the subject.

I could also try to put both the time AND the name in the menu.
Of course this would result in a HUGE menu, that could possibly stretch across the entire screen, and this would just look silly.

2. Why can't we add messages to alarms, so we can use it for reminders?

The reason I haven't implemented something like that is because I don't want people to think of it as a calendar application. I have no intention of competing with iCal, nor do I think that I could. iCal is perfect for setting up reminders for conference calls, important meetings, deadlines, and managing a to-do list. I feel that people should use iCal for such tasks, as it truly was designed for it, and does an excellent job.

It would be an easy addition to attach text, or a full message, to any alarm. In fact, I could do it by adding another tab at the top of the alarm editor. So there would be "Time", "Alarm" and "Message". Then when the alarm goes off, hitting Stop would bring up the message. I could even program an option where the message is read aloud to you, using Apple's speech API.

But I see a problem with this. The application was made for one purpose, and one purpose only. To be an alarm clock. When people use alarm clocks, they use them to wake up in the morning. Then after they've woken up, they check their calendar to see what they have to do today. My application isn't this calendar. That's what iCal is for. Perhaps they have some other reminder for themselves. Like "don't forget to do such-and-such before leaving for work". And what do people usually use to remind themselves of such little things? Post-it notes! And the computer equivalent would of course be the Stickies program. Many people use repeating alarms. So setting these little reminders for themselves doesn't make sense in the alarm clock. You'd have to go in and set it the night before, and then go in again and delete it the next day. I guess I could make a "One-time" note feature, but I just think it's easier to make a sticky note. Besides, sticky notes don't go away until you want them to. The alarm message would go after stopping the alarm. I just don't see any reason to reinvent the wheel, especially since my wheel wouldn't be as good as the one's that are already out there. And it also makes a simple, elegant application a little less simple, and a little less elegant.


As always, I'm open for criticism. If you disagree with me on any of these points, feel free to let me know. Or if you have a different idea, different view, etc.

Version 2.3.2

I've recently released version 2.3.2. This version includes the previously mentioned Portuguese localization. It also includes a new dmg background image, courtesy of Chike Orjih! I think it looks great!

The main feature addition of this version is the addition of AppleScript support. This has been on my todo list for a long time, and I apologize for just now getting around to it. It was added at the request of 3rd party remote control users, and salling clicker users. You too can now hit snooze without getting out of bed! Just use the following line of AppleScript:
tell app "Alarm Clock" to snooze

I may be adding more applescript support in the future. If you're a scripter, tell me what you'd like to have added.

Friday, June 02, 2006

Portuguese Localization

I've just received a portuguese localization for the alarm clock! This makes 11 supported languages!

I'm always looking for more localizations! Is anyone out there interested in doing a Japanese translation? My website gets a lot of hits from Japan on a daily basis, and I still don't have a Japanese localization... If you're interested, email me at: robbiehanson15@gmail.com

Version 2.3.1

I've recently released a minor update for version 2.3. The big news in this update is that the alarm window displays the current song information. When an alarm goes off, it alternates back and forth between displaying keyboard information (such as "Press any key to snooze, Press enter to stop") and song information (such as "Banana Pancakes, Jack Johnson") It switches back and forth every 10 seconds just like iTunes, and also like iTunes, you can click the text to manually switch between the two whenever you want. So if you've ever woken up to a random song in a playlist that you didn't know what it was, no longer will you be frustrated all morning trying to figure it out.

Also, a while back I added functionality to the apple remote. Users with an apple remote can go to the next and previous songs in a playlist. Well I figured that remote users shouldn't get to have all the fun, so I also implemented this functionality right in the alarm window. When using a playlist, there are now "<" and ">" buttons which will go to the previous and next songs respectively.

I also added icons to the playlist menu. So at a glance you can tell which playlists are smart playlists, or folders, or regular playlists, etc. I also sort the playlist menu just like iTunes does, so smart playlists will always be above regular playlists, and such. This makes it much easier to find the playlist you're looking for. This feature, like the one above it, were planned for version 2.3, but I got so excited after I finished the timer and stopwatch, I decided to release early.

And of course there are some bug fixes. All of them had to do with the timer and the stopwatch. No bug fixes for any part of the alarm system because... well... I haven't had any bug reports in a long time! :)

In version 2.3, timer window location and window size are saved, and restored when you open a new timer window. (Same for stopwatch) The big problem that I had to fix was that it didn't check to make sure the position was actually on the screen! So if you sometimes use multiple monitors, and then switch to just one, and your last timer location was on your secondary monitor, then the window would be offscreen with no way to move it! Oops! Thanks to Luke for alerting me to the problem. It should now be resolved. Hopefully this didn't affect you. If it did, my apologies.

Tuesday, May 23, 2006

Version 2.3

Version 2.3 was recently released.
The response thus far has been phenomenal! One of the biggest requests was for the addition of a timer. I've added this functionality, and I believe I've done it in style. If you don't have it yet, you should download it now.

You can also check out the screenshots of the new features here:
http://www.robbiehanson.com/alarmclock/screenShots.html

Thursday, May 18, 2006

Long time, no see

It's been over 2 weeks since I've offered an update for Alarm Clock, or posted to this blog. What have I been doing? Have I been relaxing at the pool, taking in the beginning of my summer vacation? Heck No! I've been hard at work on the Alarm Clock, adding features, and making it more stable. More to come soon...

Wednesday, May 03, 2006

Hebrew localization

I've just recieved the first draft of a Hebrew localization. It should be completed/approved very soon. This will be the 10th supported language for the app.

I'm always looking for more localizations! Is anyone out there interested in doing a Japanese translation? My website gets a lot of hits from Japan on a daily basis, and I still don't have a Japanese localization... If you're interested, email me at: robbiehanson15@gmail.com

Monday, May 01, 2006

Version 2.2.6

A new version is available. Here's the low down.

Feature additions:
-Now automatically skips to the next song in between snoozes when using a playlist. I often use a playlist to wake up, but since I wake up rather fast, and hit snooze many times, what ends up happening is I hear a small section of the song many times in the morning. No matter how much you like a song, after it wakes you up 15 times in the morning, it starts to get really annoying! So with this addition, a single song won't constantly annoy you if you're using a playlist.
- You can also manually skip to the next track, or go back to a previous track with the apple remote. Several users requested this feature, and since I saw no reason not to implement it, I honored their request.

Bug fixes:
-Fixed bug where app would crash if it encountered a bad alias.
-Fixed bug where app would crash if you immediately hit stop before the background thread completed parsing the iTunes library. Depending on your computer, and the size of your iTunes library, the background thread lasted anywhere from 0.3 to 2.5 seconds. So yes, you had to act extremely fast if you wanted to catch this one.
-Fixed bug where app would crash if you tried to edit a one-time alarm after the alarm had already gone off. This was only possible if the alarm editor was open when the alarm went off.
-Fixed memory leak in iTunes player. It was possible for a few variables to not get released.
-Fixed bug where currently snoozing alarm doesn't wake up a battery powered MacBook Pro that goes to sleep between 30 and 45 seconds before snooze ending, or between 0 and 15 seconds before snooze ending. (Yes, it only affected intel Macs because they take much longer to go to sleep. At least it does on my roommates MBP) (Yes, it only affected the computer if it was on battery power.) (Yes it only affected the user if it happend approximately right in those ranges. So there was a 30 second window for trouble.) The precautions I had coded a long time ago didn't take into account the possibility of it taking over 20 seconds for a laptop to go to sleep. It should be safe now even if your computer takes 60 seconds to get to sleep.
-Fixed bug related to the alarm check timer firing early. This was a really odd bug that happend to me one time. Timers are supposed to fire at specific intervals. Sometimes they fire a bit late, but I had NEVER seen them fire early... until now. So the time was firing several milliseconds before the second hand got to zero. This meant the program thought it wasn't time for the alarm to go off. So it wouldn't check again until the next minute, and the end result was that the alarm went off a minute late. When this happened to me, it continually happened every time I ran the application. I was very perplexed. But when I restarted the computer, the problem completely went away, leading me to believe it was a freak bug in the OS or in the NSTimer API or something. But regardless I added code to allow for slight inaccuracies in the firing of the timer that will take care of the problem should it ever happen again.

I wasn't planning on releasing a 2.2.6 version, but when bugs pop up, especially any that would prevent an alarm from going off, I drop everything else, and get them patched immediately. Stability is the main focus. I'm not sure if these problems actually affected anyone, but the fact that they could have keeps me up late into the night working on it. I would rather lose several hours of sleep, then cause someone else to oversleep! My primary focus now is on version 2.3, but if anything serious comes up, a fix would be immediately offered.

Thursday, April 27, 2006

Email suggestions

I get dozens of emails each day about the alarm clock application. Many times users have suggestions for the app, and we converse back and forth about their implemenatations. Many of the new features in AC2 (and the upcoming features in version 2.3) are directly related to user suggestions. If you have suggestions, or general feedback I encourage you to send me an email or post a comment. (you can post comments annoymously on this blog if you wish)

There is one suggestion that I occasionaly get that I would like to publicly state my position. Every so often, I get a suggestion that says "how come I can't launch a 3rd party app when an alarm goes off?" There are several reasons why I haven't implemented such things in AC2, and I've pasted a recent email response to a similar suggestion below:

I apologize, but this is a feature request that I'm consistently resistant to.
Let me explain my thoughts on the matter.

For as far back as I can remember, I've hated alarm clocks with the passion of a thousand fiery suns. Every morning they would go off, loud and next to my ear, destroying my pleasant dreams and shattering my slumber with their incessant beep-beep-beeping. I'm convinced that in hell they use the sound of a beeping alarm clock as background music. (sorry, I'm getting off topic) So when I finally got my first mac several years ago, I realized it's potential as an alarm clock. Not being a mac programmer at the time, I did what everyone else does, and went out and downloaded one. For the next several years I used this alarm clock (as well as several other alarm clock programs) and learned a few things about them.

One of the things I learned (the hard way, several times over) was that it sounds cool to launch other applications to wake you, but it's not reliable. The alarm clock program probably has no problem running scripts, or launching other apps, but those apps were NOT made with the functionality of an alarm clock in mind, and don't always behave as one would expect. Would you stake your job on the ability of an applescript to launch EyeTV, and that EyeTV would launch perfectly without prompting you for anything, and would be at the correct volume, and would be on the correct channel...? (I used EyeTV because the sender specifically mentioned it, but you can insert any 3rd party app here.) When you start to think about all the potential problems with launching other apps, you start to see the problems that something small could cause for an alarm clock program. Many programs out there allow users to do all kinds of things when an alarm goes off, but how safe are they to use? One time I set my alarm to open up a webpage which would play an online radio station. The alarm clock launched the browser correctly, but when I awoke an hour late I was greeted proudly with a 404 error. I then had to explain to my Math teacher that the reason I missed the exam was because I was using a computer alarm clock and that it was set to open a web page which had restructured and changed URL's. His response: he laughed at me, told me to get a real alarm clock, and told me that excuses like that won't work in the "real world" so they won't work here.

Even the alarm clock applications out there that only play music aren't totally safe, because most of them rely on applescript to control iTunes! (Mine does NOT, btw) I've had my fair share of problems with these apps as well.
Think about some of the problems an alarm clock runs into when it depends on iTunes to play it's alarm in the morning:
- iTunes was recently upgraded, and requires you to re-agree to the license agreement. It was launched by your alarm in the morning.
- iTunes was set to play to your airTunes speakers, but they aren't available
- iTunes was set to play a radio station, but gets disconnected during play time. The music stops.
- A short playlist is used, but you forgot to turn on playlist repeat.

I can think of several more, but I'm sure you get the point.
It is directly because of all these problems that I decided to make my own alarm clock. I was sick and tired of alarm clocks which would occasionally not work in the morning. In my opinion that was completely unacceptable, and I think most people don't use alarm clocks on their computer because of all the crappy alarm clock software out there. I've made it my personal mission to make an alarm clock that is completely dependable. It doesn't execute applescripts, or launch web pages, or 3rd party applications... but you can rely on it to wake you up in the morning. It doesn't cross-fade songs in your playlists, or turn on iTunes visualizations... but you can sleep peacefully knowing that it will operate correctly in the morning, no matter what.

I'm sorry to shoot down your idea, and I hope I haven't offended you, but this is something I'm rather passionate about. I hope you can understand where I'm coming from, and maybe appreciate my desire to create such a dependable application.

Tuesday, April 18, 2006

Version 2.2.5 released

I just released a new version. I was going to add a few more things, and release this version later, but I found an OS X bug (on Intel only) that required an immediate patch. There were two major changes in this release:

1. "Implemented work-around for OS volume bug that affects intel macs immediately after waking from sleep."
When an alarm goes off, one of the first things the alarm does is execute a core audio call to set the system volume. For some reason, these calls don't work on Intel macs if they are executed shortly after the system wakes from sleep. The effect is that if the alarm clock wakes the computer from sleep to sound an alarm, the volume may not be properly set, and thus may not be loud enough to wake the user. I'm not sure if this happens on every Intel mac, but I received word of 2 confirmed cases, which was enough for me to classify it as a class-A bug, and scramble to release an immediate patch. Stability is key. This problem is now solved, as AC will continually set the volume during the alarm.

2. "Alarm Editor now properly badges close button during editing."
That is, if the alarm gets changed, the app will put the black dot in the red close button to indicate it's been changed and hasn't been saved. This is common in many apps, and AC now follows suite. If the user tries to close the window when there is unsaved changes, they are prompted to save their work. This helps as several users have stated that they sometimes close the alarm editor windows with the red button, and don't know if it's been saved or not.

Tuesday, April 11, 2006

How about a new name?

Many people have asked me, "Why do you call your product simply 'Alarm Clock'?" The answer is that when I started working on it, it was an obvious name and I figured I'd think of a clever name for it later. But I never did come up with a name I liked, and finally released it to the public with the same generic name. Some people like it. They say it's a simple name for an easy-to-use program. Other people think it's a silly name, and it makes the product look bad. So I wonder what YOU think of the name. Do you like it? Do you dislike it? Does it not matter? Do you have any ideas for an alternate name?

Monday, April 10, 2006

Version 2.2.4 released

Version 2.2.4 has just been released.
The biggest change in this version is the support for time zones. This means that if you change the time zone (via system preferences) the alarm clock will automatically update all the alarms to go off at the proper time for the new time zone. Also, if you change time zones while the application isn't running, it will update all the alarms to the new time zone when it launches.

If you're wondering why this was previously a problem, it's because of the way OS X stores dates. They are stored as the number of seconds since 1 Jan 1970 GMT. So '0' might mean '1 Jan 1970 12:00 AM' in London, but in New York it might mean '31 Dec 1969 8:00 PM'. The correct date and time are displayed by applying the time zone offset to the GMT time. Therefore, a date set for 9:00 AM EST, it will always go off at 9:00 AM EST... and if you happen to be in St Louis, that means the date is set as 11:00 AM for you! Confusing? Well all you really need to know is that I've taken care of all these problems. I worried about it so you wouldn't have to. Travel all you want, change time zones at will, and don't even try to remember when daylight savings is! Just set your alarms, and they will go off when they're supposed to. Enjoy.

Thursday, April 06, 2006

Windows screws up your clock

If you have an Intel Mac, and you installed Windows XP with the newly released Boot Camp from Apple (or you plan on it), beware of your system clock. Windows will screw up the time on the Mac!

This is because of the way the time is stored in EFI/BIOS. Windows XP sets the BIOS clock to match the local clock, but OS X uses the international standard UTC (Universal Time, otherwise known as GMT). One way to fix the problem is to set the Windows time zone to GMT (+0000) and deselect "automatically adjust for daylight saving time".

Tuesday, April 04, 2006

Italian Localization!

I just received an Italian localization for the alarm clock. It has been merged into the current build, and will be available upon the release of 2.2.4. (Which I'm currently working on.) This makes a total of 9 localizations...and counting. More are always welcome!