MemHack 1.0
(c) 2002 Yih-Chun Hu

Crashing: MemHack seems to not play nice with some programs (for example, 
PhotoBase). It'll crash with error "MemoryMgr.c, Line:3583, Free handle." I
honestly can't tell you why; MemHack is runs 100% clean on PalmSim tests. I've
also found that smaller databases improve stability (Noah Lite doesn't cause
crashes on my T|T with Wordnet mini, but does with Wordnet large). Also, my 
T|T sometimes spontaneously resets when MemHack is run. If you patch any of
this, I'd love to see it; please send me mail.

Bogus progress note: when deleting databases, it says it's deleting 0 files.
I'm sure it's a trivial programming error, but I can't be bothered to track
it down.

Copy-Back: It'd be kinda cute if a directory within /Palm/Programs/MemHack/X/
indicated that the files should be copied back (rather than deleted). Another
pref could store the VFS dir to copy back to. Don't forget to void it if the
card is removed (and register for volume unmount notifications). I don't make
this default behavior because, well, I don't change the dictionary very often,
nor do I change my ChordPro database, or my... well, you get the idea.

Progress Bar: At least on the T|T, the first few bits are the slow ones, then 
the download goes pretty fast. Maybe make the progress bar reflect this. Would 
compression (with a native ARM decompression lib) help?

Cancel: I'd love to allow the cancellation of a download, for example by 
tapping above the progress bar, then below. updatfn() would empty the event
queue, looking for this type of behavior. The real question is what to do
once the job is cancelled. Can't exactly switch back to the previous app 
without becoming McPhling.

Read Only: I tried setting the MemHack'ed in databases to be Read Only (the 
source code is included) at the suggestion of my advisor. Unfortunately, many 
programs don't play nice with their databases being read only, even when they 
have no need to write said database. Furthermore, if your Palm crashes, it's a 
real pain to clean up the database. (I did a hard reset). I considered making 
them recycleable, but a program may open its own database several times. If
you have any ideas on how to handle any of this, it may be amusing to try it
out.
