Monday, April 21, 2008

HotBox 1.0 is released

Finally, I manage to release a software project I had been working on sporadically for months. It really does take a lot of time for me to finish things I start.  But it's done, and I'm very proud of it!

So far, things have been going well.  I was afraid for a while that I would be assaulted with bug reports of all sorts of things not working in HotBox, but for the most part, people seem to be happy.  I've gotten a few bug reports here and there but they seem to be isolated cases rather than signs of huge, sweeping problems.

Also, I'm very thankful to everyone that's donated to HotBox so far.  There's all sorts of other projects I want to embark on now that it's done, and of course there's going to be further development in it too, and donations definitely keep me encouraged to keep working.  Another thing is if people are donating, that means that they think the program is cool enough that it's worth giving money to the author, and that's awesome.  HotBox was absolutely a project I started because I thought it was a really good idea and that other people would enjoy it a lot, and so far it seems to be that people like it.  Word.

I should address one thing, which is the number one most requested feature in the few days HotBox has been out on the internet, and that is:  Using the cursor while zoomed in.

Here's the quick answer: I really want to add this feature, but I don't know if it's possible, and I don't know when I'll have time to add it.  So don't hold your breath yet.

Here's a longer answer that requires a bit of an explanation of how HotBox actually works:

HotBox doesn't do anything especially magical in terms of getting the screen to zoom in.  It basically makes clever use of the Mac OS X accessibility feature for zooming in that's existed in the OS for some time now.  A few users were quick to point out that you can accomplishing zooming also by using Command-Option-+ and -, or by holding control and using the scroll wheel, and this is true.  The disadvantage, though, was that as soon as your zoomed in that way, moving the mouse around would cause the screen to move with it, and a potentially huge cursor would sit on top of whatever you were trying to watch.  Also, it's difficult to get the thing you want to zoom in on to fit the screen perfectly.  I made HotBox in order to address those problems, as well as a few others.

However, all HotBox is doing is calculating how much the screen needs to zoom in and telling the OS to zoom in that much next time, figuring out exactly where the cursor needs to be on screen in order to make the thing you selected fit properly, moving the cursor to that point and freezing its location, and then simulating a zoom-in hot key press. The result: the screen zooms in on exactly what you selected. (Note the emphasis in the previous paragraph.)

So the problem is, if I kept the mouse unfrozen while HotBox is invoked, the screen will scroll around with it.  Granted it's possible to change things so that the screen only scrolls around once the cursor reaches the edge of what's visible (and in fact HotBox does this), but then it's still a problem when you move the cursor outside of the zoomed in area.  (Some people might have noticed that you can actually still move the cursor around and scroll the screen.  This is in fact a bug, and I will probably fix it fairly soon.)  Basically I'd need to get it so that the cursor is constrained to a specific region of the screen, and there's no good way to do that in Mac OS X that I know of.  My theories on how to pull this off regardless involve some tricks possibly involving a fake cursor, but I won't get into that now.

So rest assured, when I get the chance, I'm going to try to add the mouse functionality to HotBox... but I can't guarantee I'll be able to make it work. HotBox's primary function was to make it possible to watch online videos full screen when they don't have a full screen button. But since it can potentially be really useful for presentations and other things like that, I'll see if I can't make it even better.