Fasinator 0.3 – Watcher 0.3 – ICE week

ICE, Mac OS, The Fascinator Desktop, Ubuntu/Linux, Window, iPhone, watcher No Comments

Soo what have I been doing lately?

The Fascinator Desktop
The Fascinator 0.3 Desktop was released 3 weeks ago.

Features implemented in The Fascinator 0.3 Desktop can be found in: http://fascinator.usq.edu.au/trac/wiki/tf2/Version0.3.0

P.S: for new features and enhancements request for The Fascinator 0.4 can be found in: http://fascinator.usq.edu.au/trac/wiki/tf2/Planning

So what are the features have been implemented in The Fascinator Desktop so far? I have compiled and created a simple features page for easy browsing: http://fascinator.usq.edu.au/trac/wiki/tf2/DeveloperNotes/Features

Watcher
Together with The Fascinator 0.3 Desktop, we released Watcher Watcher 0.3beta and 0.3pyinotify, http://fascinator.usq.edu.au/trac/wiki/Watcher

In Watcher 0.3beta, we start to support multi platform File system watcher. Ron Ward developed the watcher code in .NET, thus for linux/Mac OS X users, the same code base can be used through mono

For Watcher 0.3pyinotfy, this will be the last release for Linux that use pyinotify. Why we are not using pyinotify anymore? Basically it’s only work in Linux.

Issue found in both version of Watcher-s: file rename/move from a directory to another directory in Linux/Mac OS X is not working properly. This is a known bugs found in mono, https://bugzilla.novell.com/show_bug.cgi?id=418241 as well as pyinotify http://trac.dbzteam.org/pyinotify/ticket/30.

ICE week
Last week is ICE week. Peter Sefton wrote ICE week background on his blog: http://ptsefton.com/2009/11/25/ice-week-background.htm.

My task was generating eBook plugin for ICE package in ePub format based on the manifest items found in the ICE organiser.
Result? The generated eBook can be viewed in Peter’s Android phone as well as my iPhone. During this development, I encounter a usefull tool to check the validity of the epub structure that I created. This tool can be downloaded from http://code.google.com/p/epubcheck/

I also successfully implement epub generation in The Fascinator Desktop. This feature will be included in The Fascinator 0.4 release. Some note about epub feature in The Fascinator Desktop: http://fascinator.usq.edu.au/trac/wiki/tf2/DeveloperNotes/Features/eBook

I realise that I have been using a lot of links in this blog entry ==”. But maybe it’s for the best instead of duplicating the documentation that I have written in the wiki page. :)

Stay tune!!

funbrain

MAC OS X – FS Watcher for The Fascinator Desktop

Mac OS, The Fascinator Desktop, eResearch No Comments

When a file is created, modified or deleted in MAC OS X, knotify will notify Spotlight to re-index and extract the metadata and data contents of the file. All the indexed information is stored in .Spotlight directory on the root directory.

In my previous blog post, Linux-FS watcher, I mentioned that i used sqlite to store the information of the file when the file is created/deleted/modified. I also created linuxwatcher.py to listen to the event provided by the pyinotify. After read through the Spotlight Querying API, it is possible to implement Spotlight as our MAC OS watcher by querying the modification date of the file; kMDItemContentModificationDate; refer to: Spotlight Metadata Attribute. Thus, we do not need to use sqlite as the database to store the event of the file.

Drawback of using spotlight as Desktop watcher:

  1. Spotlight does not provide the information of the “event” of the file e.g. modified/deleted/created. Spotlight still keep the file metadata even file is deleted locally in the filesystem. This feature is actually provided by Apple so user is able to recover their file if they accidentally delete their files.
    However, this “event” is needed in our watcher so Fascinator is able to keep know the status of the file. This issue can be solved by checking the query result against the file in the filesystem, so if the file is exist and Spotlight query return the file, watcher will notify Fascinator that this file has “mod” event, and if the file is not exist in the filesystem, the file has “del” event. Note: Spotlight has kMDItemFSExists to check if the file is exist in the filesystem, but its never implemented.
  2. Spotlight might not reindex/update the metadata of the file properly: http://www.macosxtips.co.uk/index_files/terminal-commands-for-improving-spotlight.html. This means that if Spotlight does not update the database when the file is added/modified/deleted, watcher will not get this information.

Due to the issue #2, we still need to discuss what is the best way to implement MAC OS X watcher.