jMemorize on github

I don’t have a lot of experience with github, but I really love the idea of having patch and fork management integrated in a hosted code management site. During my active development of jMemorize I worked mostly alone, one reason for this being how much hassle it was to handle code submissions by other people. Either I would have manually wrestle with patch files sent over email or the patch board, or I would have to give away direct SVN access to the official repository. Two options which never felt super comfortable.

I haven’t released a new version for jMemorize for a long time, but none the less I uploaded the code for version 1.3.0 to github. You can find the source code on github at

Feel free to fork away, browse the code and maybe even to submit patches.

Advertisements

jMemorize broken lesson file bug

There is a bug in jMemorize that can break the lesson file and make it impossible to access your flashcards. When you try to open the file, jMemorize will display an error dialog which when extended says something like “java.io.IOException: Character reference “&#11″ is an invalid XML character.”

The problem appears to be caused by faulty Java XML parser implementation, which has problems with certain characters that can’t be entered inside of jMemorize – but can be copy’n’pasted from other programs into jMemorize, most often from Adobe Acrobat Reader.

There is a simple way to fix the lesson file. When compression is enabled, lesson are basically zip-files. Uncompress the file and inside you will find a ‘lesson.xml’ file. Open that file in a text editor and remove all appearances of the problematic character sequence with an added semicolon. For the example error message given above, this would be “”. Save the xml file and put it back into the zipped file.

On my Windows system I usually do this: I add the file suffix “.zip” to the lesson and then double-click on it to open my WinRar software. I then drag’n’drop the lesson.xml onto a folder. Then I edit the lesson.xml in a text editor and drag’n’drop the file back onto the opened WinRar window, so that the lesson.xml in the zip file gets updated. I close WinRar and remove the suffix and I have a fixed lesson file.

jMemorize will only put the lesson into a zipped file, when compression is enabled in the preferences dialog. If compression is disabled, the .jml file is just the plain text file already, so you can open the .jml directly in your text editor and fix the file without having to handle any zip software.

If you need more help, please open a bug on the jMemorize bug tracker, upload your faulty lesson file and I will take a look myself. Considering over 170,000 downloads this bug doesn’t seem to occur very often. It’s pretty annoying none the less though and I’m sorry for any inconveniences it is causing.