On May 14 at 16:36 +0900, Robert Gravina wrote:
> Slightly OT but... I'm planning on getting an iPhone in the next few
> days, and itching to make use of my commute time for Mnemosyne
> reviews... but I'd like to use the Mnemosyne algorithm and sync with
> the desktop version. Is anyone currently working on an iPhone version,
> say by using that C library mentioned a while back? Or, implementing
> the algorithm in Objective C?

This is a bit off-topic, but it may clarify the status of the C
library...

I've reviewed cards on my Nokia 6121 with the MnemoGoGo J2ME client
yesterday and today, and fixed two major bugs in the process.

MnemoGoGo uses locking export/import rather than full synchronization:
 http://www.cse.unsw.edu.au/~tbourke/software/mnemogogo-design.html
This approach is less convenient and less flexible, but it is easier
to implement.

The MnemoGoGo plugin works quite well. It tries to do most of the work
on the PC in Python:
 * Resizing images to the target resolution and maximum size.
 * Converting image filenames to ascii.
 * Changing text and html to match the client's browser.
 * Exporting only those cards that are due for review in n days.
 * Locking reviews on Mnemosyne until mobile review is complete.
 * A simple user interface for exporting and importing.
 * It calls standard Mnemosyne plugins with a special hook.
 * It supports an interface plugin system so that its output can be
   customised for particular mobile clients.
 * It contains reimplementations of the Mnemosyne 1.x scheduling and
   grading algorithms in Java and C.

I only need to do a few more export/import cycles before declaring it
production ready. The same, or similar, issues would have to be solved
for any mobile client; synchronization is only a part of it.

MnemoGoGo is based on Mnemosyne 1.x and currently requires a (small)
patch to use. The disadvantage is that Mnemosyne 2.x is the future.
The advantage is that it works now.

MnemoJoJo is a J2ME MIDP/CLDC client for MnemoGoGo. It also has
several strong points:
 * A simple, minimalist interface (like Mnemosyne).
 * Rendering of simple html (colours, italics, bold, tables).
 * Display of images (and support for answer overlays).
 * Fast: startup=~3secs shutdown=~1sec.

The biggest problem is that some mobile phones (like mine) require
each file read and write to be confirmed by the user. This equates to
10 additional key presses at startup and at least 2 between each card
(and one for each image). There are two possible solutions
 * Certify a version of the application. This is expensive.
 * Implement a simple file system on top of a single file to minimise
   the number of required confirmations. But, this would make the
   implementation more complicated and likely reduce performance.

That said, MnemoJoJo is an adequate solution given the current lack of
alternatives. Two issues remain to be fixed before it is production
ready:
 * The scheduling of new and forgotten cards needs improvement.
 * Basic documentation is required.

MnemoJoJo uses a Java library, but it is based on the original C
library. My experience suggests that the C library could be adapted
for a platform like the iPhone. Some porting and debugging would be
required, but certainly less effort than writing it (and the rest of
the export/import system from scratch).

Tim.

Attachment: pgpCMxId4Vhbc.pgp
Description: PGP signature

Reply via email to