Warning!
You would think that a program this simple would not have any problems. I am not aware of any bugs, but there are a few issues that should be dealt with.
Windows® Brain Damage (automatic reboot)
The first problem is recovering from a computer that has restarted in the middle of the night. This could be partially solved by saving the alarm time and setting Quack to start up automatically the next time the computer starts up. Then, when the program closes, it would set itself to not start up again.
This still has a problem, though. If the computer does not automattically log in the user, the progrram will not run.
I avoid this problem by disabling automatic updates on windows. That has caused my computer to restart without any intervention several times. I don't know why the script kiddies programmers at Microsoft decided that the OS should reboot itself without any user intervention. That has potential to cause some serious problems (lost files, cancelled downloads, sleeping in, etc.).
Volume
The second problem, is making sure that the computer's volume is set high enough. I could just keep increasing the volume until the alarm is shut off (then reset it to the previous level), but my speakers also have their own volume control that is not controllable by the computer. I used to do this on another alarm clock program that I wrote for Linux. (I like making my own alarm clocks. I'm just wierd like that, OK?) But that computer had no separate volume control on the speakers, so turning the volume up always worked. Quack does not increase the computer's volume because I always have it turned all the way up.
I can't think of any way to 100% guarantee that the sound will be loud enough. I can increase the odds a little by playing the sound once when the alarm is set so that I will notice if it is too quiet. I will probably add that eventually. For now, It works well enough, and I have more interesting things to do. I know that's probably pretty lazy (it would take about 1 minute to program that), but that's how it is.
.NET
The program is written in C#, so it depends on the .NET run-time library. There's nothing I can do about that except to write it in a different language. I used the program to familiarize myself with .NET and C#. I normally would have used C++.
